Access, import per Kommandozeile

Hallo,
ich habe eine TXT-Datei, Leerzeichen getrennt. Diese Datei wird regelmäßig geupdated und muss dann manuell in Access importiert werden.
Gibt es hierzu auch die Möglichkeit das ganze per Kommandozeile zu machen?
Dachte an eine einfache Batch, oder Perl?

Vielen Dank und Gruß

Marcel

P. S.
MS Access 2003
Windows XP Prof
Perl 5

Bin darin zwar auch kein experte, aber eine (wenn auch nicht unbedingt schöne)Lösung wär:

  • Eine zweite Access DB anlegen (mit referenzierenden Tabellen auf die originale DB)
  • dort ein Import Makro erstellen
  • dieses als autoexec (bei db start) definieren
  • das Makro am ende des Updates die DB wieder schließen lassen
    Und diese zweite DB kannst du ja bequem per Windos Sceduler alle par Minuten starten lassen. (oder mit ner Batch) :wink:

Ich habs noch nicht ausprobiert, aber ich denke es sollte funktionieren.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Mahlzeit,

Gibt es hierzu auch die Möglichkeit das ganze per
Kommandozeile zu machen?
Dachte an eine einfache Batch, oder Perl?

ja, das geht, und zwar mit dem Kommandozeilenparameter „/cmd“. Damit übergibst du beliebige Parameter deiner Anwendung. Sie sind dann in der globalen Variable Command verfügbar, die du dann auswerten kannst, z.B. durch Überprüfen, ob sie leer ist, dann ist das ein „normaler“ Aufruf, und wenn nicht, dann wird halt deine Importprozedur angestoßen. Diese sollte schlauerweise dann die MDB verlassen (Docmd.Quit).

HTH

Sancho

Hallo Sancho,
also prinzipiell hört sich das nach dem an, was ich suche.
Aber so ganz verstanden hab ich’s noch nicht. Leider bin ich auch im Netz nicht fündig geworden.
Also, ich kann z. B. über ein DOS-Fenster mit MSACCESS /cmd Access im Kommandozeilenmodus öffnen, ist das richtig?

Wie gebe ich dann die Befehle ein und wie lauten die? Hast du zufällig ne Quelle, oer ein Beispiel wo ich mich schlau machen kann?

Danke für die schnelle Hilfe.

Gruß Marcel

Hallo Stefan,
danke für deine Antwort,
aber wenn ich 2 DBs geöffnet habe, dann habe ich doch noch immer nicht die TXT-Datei importiert, oder verstehe ich da was falsch?
oder meinst du evtl. das über das Makro importiert werden soll? Wäre sicher ne Alternative, aber dazu fehlen mir die Befehle, und in Access kann ich kein Makro aufzeichnen, hast du da evtl. noch nen Rat, wie ich an die Befehle komme? Grundkenntnisse in VBA hab ich, aber leider mehr die Excel-relevanten Sachen.

Gruß Marcel

  • Eine zweite Access DB anlegen (mit referenzierenden Tabellen
    auf die originale DB)
  • dort ein Import Makro erstellen
  • dieses als autoexec (bei db start) definieren
  • das Makro am ende des Updates die DB wieder schließen lassen

Mahlzeit,

also prinzipiell hört sich das nach dem an, was ich suche.

fein.

Also, ich kann z. B. über ein DOS-Fenster mit MSACCESS /cmd
Access im Kommandozeilenmodus öffnen, ist das richtig?

Nicht ganz - über die DOS-Kommandozeile kannst du Access ganz normal öffnen:

C:\\> C:\Programme\Access\Msacess.exe

Über Kommandozeilenoptionen kannst du das Verhalten von Access steuern, untre anderem kannst du ihm mitteilen, daß es deine Datenbank öffnen soll.

C:\\> C:\Programme\Access\Msacess.exe "C:\Projekte\Meine tollen Datenbanken\MeinProjekt.mdb"

Außerdem kannst du der so geöffneten MDB eine Kommandozeile mitgeben:

C:\\> C:\Programme\Access\Msacess.exe "C:\Projekte\Meine tollen Datenbanken\MeinProjekt.mdb" /cmd "Kuckuck"

Das wäre die halbe Miete. Die andere Hälfte besteht darin, innerhalb deiner MDB diese Kommandozeile auszuwerten. Dazu kannst du z.B. eine Prozedur innerhalb eines Moduls erstellen, das dieses erledigt:

Public Sub KommandozeileAuswerten 
 if Command = "Kuckuck" then
 FuehreImportDurch
 Docmd.Quit
 else
 Docmd.OpenForm "MeinHauptformular"
 End If
End Sub

Damit diese Prozedur ausgeführt wird, muß sie in dein AutoExec-Makro eingebunden werden.

Die Prozedur FuehreImportDurch ist beinahe trivial:

Public Sub FuehreImportDurch
DoCmd.TransferText acImportDelim, "Spezifikationsname", \_
"Zieltabelle","c:\Import.txt"

Noch ein Schritt zur Automatisierung: das kannst du über at periodisch laufen lassen:

at 15:45 /every:Monday,Tuesday,Wednesday,Thursday,Friday C:\Programme\Access\Msacess.exe "C:\Projekte\Meine tollen Datenbanken\MeinProjekt.mdb" /cmd "Kuckuck"

Wie gebe ich dann die Befehle ein und wie lauten die? Hast du
zufällig ne Quelle, oer ein Beispiel wo ich mich schlau machen
kann?

Logen - die Access-Hilfe (Themen DoCmd, TransferText, usw - sie bietet auch gute Beispiele, dazu die Nordwind-Datenbank. Für Hilfe zum At-Kommando einfach at /? in der DOS-Kommandozeile angeben.

Gruß

Sancho

Hallo Stefan,
danke für deine Antwort,
aber wenn ich 2 DBs geöffnet habe, dann habe ich doch noch
immer nicht die TXT-Datei importiert,

das zweite sollte eigentlich keine „echte“ DB sein, sie dient nur dazu, dass man nicht immer die ganze DB mit allen Daten und Abfragen öffnen muss

oder verstehe ich da was
falsch?
oder meinst du evtl. das über das Makro importiert werden
soll?

ja

Wäre sicher ne Alternative, aber dazu fehlen mir die
Befehle, und in Access kann ich kein Makro aufzeichnen, hast
du da evtl. noch nen Rat, wie ich an die Befehle komme?

Du brauchst nicht viel Ahnung davon haben, es gibt einen schönen Assistenten.

Dazu gehst du auf Datei-> Importieren-> Wähle eine Beispiel txt aus
Nun wirst du gefragt, wie Importiert werden soll (Trennzeichen oder feste Breite)
Hier gibt es einen Button erweitert oder so, den anklicken und dort kannst du dann deine ganzen Einstellungen speichern.
Wenn du das erledigt hast, müsste es unter dem Punkt Makros erscheinen. Wenn du es ausführst, dann wird die Datei, die du angegeben hattest mit genau deinen Einstellungen importiert. Fertig.

Grundkenntnisse in VBA hab ich, aber leider mehr die
Excel-relevanten Sachen.

VBA brauchst du also nicht.

Gruß Marcel

Wenn

[erledgit] DANKE
Hi Danke, jetzt hab ich’s begriffen,
deine Ausführungen und die von Sancho haben somit ins Schwarze getroffen.
besten Dank

Gruß Marcel

erledigt, DANKE
Hi Danke, mit den infos von Stefan und deiner Hilfe komme ich voran.

besten Dank und

Gruß Marcel

Hallo Stefan,
vielleicht kannst du mir nochmal helfen.
Der Import der Dateien klappt nun einwandfrei,
aber jetzt versuche ich eine Abfrage mit Parameter zu exportieren.
Grundsätzlich ist der Export kein Problem,
aber kann ich direkt im Marko auch den Parameterwert mitgeben, oder muss ich das immer in der Eingabeaufforderung?

Danke und Gruß

Marcel