Guten Tag,
ich möchte in der Autoexec einer 2003er-mdb eine kleine Zeile DOS-Batch-Code ausführen ohne dafür extra eine Batch-Datei anzulegen, die dann aufgerufen wird. Wie muss ich den Batch-Befehl unter "Ausführen Anwendung" eingeben? Muss das mit "Shell" eingeleitet werden?
BS: in der autoexec bei "Ausführen Anwendung" geschrieben: shell blabla.bat funktioniert. Ich möchte aber die Befehlszeile, die in blabla.bat steht, direkt in der autoexec aufrufen.
Danke.
Gruss
Jens
Hallo,
wie heist die Befehlszeile?
echo %username%;XY-Datenbank;%date%>>m:\technik\logDB\log.txt
Der Hintergrund ist, dass ich dokumentieren muss, von wievielen Usern wie oft eine Datenbank geöffnet wird. Ich wollte das also so einfach wie möglich halten, ohne Tabellen zu verknüpfen um da rein zu schreiben. Auch wollte ich die Batchdatei nicht in jedes mdb-Verzeichnis kopieren müssen.
Was noch eine Möglichkeit wäre: direkt in eine geschlossene Datenbank, auf die jeder User Zugriff hat, zu schreiben. Da fehlen mir jedoch das Wissen, wie ich da anstellen soll....
Hallo,
vergiss das mit dem Bat.
Lege Dir eine extra Datenbank an, mit einer Tabelle. Diese Datenbanktabelle verknüpfst Du mit der eigentlichen Datenbank.
In diese Tabelle schreibst Du jedes mal beim Öffenen der DB den User.
An sich, kannst Du auch auf die extra DB als Log DB verzichten.
Eine DB mit Mehrbenutzerumgebeung sollte in Backend (nur die Tabellen) und Frontend (der Rest) aufgeteilt werden. Das Backend liegt auf dem Server und gibt es nur 1x. Das Frontend gibt es mehrfach für jeden User.
Die Logtabelle ist dann einfach eine Tabelle des Backends.
Welche Access Version nutzt Du?
Hallo und danke für Deine Antwort,
ich nutze Access 2003. Es gibt viele Datenbanken (30-40), deren Aktivität ich überprüfen muss. Deshalb die Suche nach einer Lösung, die nicht so viel Aufwand erfordert. An die Geschichte mit der zentralen DB und den verknüpften Tabellen dachte ich auch schon, scheute aber davor zurück, überall die Tabelle reinzuverknüpfen. Da war mir die Idee mit der Einzeilenlösung gekommen, die nur recht wenig Aufwand darstellt (wenn sie funktionieren würde)...
Hallo,
OK dann mache es so:
ZitatWas noch eine Möglichkeit wäre: direkt in eine geschlossene Datenbank, auf die jeder User Zugriff hat, zu schreiben. Da fehlen mir jedoch das Wissen,
Hier dann das Wissen dazu: ;D
Lege Dir eine DB an auf einem beliebigen Laufwerk. Nenn die DB z.B. "LogDb.Mdb".
Die DB kriegt eine Tabelle (Name: "LogTab") mit folgenden 4 Feldern:
LogID (Autowert)
DBName (Text, 255 Zeichen)
DatumZeit (Datum/Uhrzeit)
User
Jede DB der 30-40 DBs braucht jetzt ein allgemeines Modul mit folgender Funktion:
Public Function fncUserEintragen()
Dim Rs As DAO.Recordset
Set Rs = DBEngine.Workspaces(0).OpenDatabase("c:\LogDb.mdb").OpenRecordset("tblLogTab")
Rs.AddNew
Rs!DBName = CurrentDb.Name
Rs!User = Environ("Username")
Rs!DatumZeit = Now
Rs.Update
Rs.Close
End FunctionJede DB erhält dann noch ein Autoexecmakro
AusführenCode mit folgender Zeile:
=fncUserEintragen()Den Pfad zur LogB (Hier C:) musst Du natürlich anpassen.
Eine extra DB mit der Logtabelle hat den Vorteil einer sehr kompfortablen Auswertung.
das ist die beste Lösung!
Danke für die Hilfe.
Gruss
Jens
EDIT: gerade getestet....klappt super. Danke.