Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

DOS Batch-Befehl in autoexec.....wie?

Begonnen von JLK, Mai 16, 2012, 08:02:03

⏪ vorheriges - nächstes ⏩

JLK

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

MzKlMu

Gruß Klaus

JLK

#2
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....

MzKlMu

#3
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?
Gruß Klaus

JLK

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)...

MzKlMu

#5
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 Function


Jede 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.
Gruß Klaus

JLK

#6
das ist die beste Lösung!

Danke für die Hilfe.
Gruss
Jens

EDIT: gerade getestet....klappt super. Danke.