Hallo,
ich wollte wissen, ob sich eine Access 2010 Datenbank über die CMD starten lässt und sich die Abfragen über die CMD verändern / ausführen lassen.
Mein Plan ist es mir eine Batchdatei zu erstellen die immer an Tag x eine bestimmte Routine ausführt.
Beste Grüße
m0w
Hallo,
ist kein Problem. Du musst nur die Datenbankdatei per Batch starten (Taskplaner).
In der Accessdb kann man ein Autoexec Makro anlegen das die Routine ausführt.
Eventuell kann es sinnvoll sein eine DB zu erstellen die nur diese ein Funktionalität bietet.
Die notwendige(n) Tabelle(n) kann/können dann in dieser DB verknüpft werden.
Danke für die Antwort!
Lassen sich denn auch die Abfragen über die CMD verändern oder muss ich das über Makro / VBA klären? (Heute - 7 Tage zB)
Kennst du vllt. ein Tutorial oder ähnliches wo ich mich belesen kann? Eine Access Datei bekomme ich auch noch über die CMD gestartet, dann hört es aber leider schon auf bei mir. ;D
Hallo,
das könnte man vielleicht über die Autostart-Funktion hinkriegen.
Du kannst ja ich Access ein Formular definieren, dass automatisch beim Start aufgerufen wird. Darin müsstest du nur noch unterscheiden können zwischen interaktivem und Batch-Aufruf...
Oder schau dir die Aufruf-Parameter unter
https://support.office.com/en-us/article/Command-line-switches-for-Access-558cfe1d-3c98-4292-bee8-1f5df9702bf1
an.
lg und frohe Weihnachten
crystal
Das hat mir schon mal sehr weitergeholfen!
Wenn ich:
start C:\Pfad\db1.accdb /x test
eingebe, dann sagt er mir "Objekt 'test' wurde von Microsoft Access nicht gefunden".
____
Edit: Fehler selber gefunden. ;D
Ich denke ich habe es so weit hinbekommen. Zumindest mit meiner Testdatenbank.
Jetzt kam mir die Idee, alles in eine Batch Datei zu schreiben (sind mehrere DB's), jedoch öffnet er immer für jeden "start" ein extra CMD Fenster, obwohl "@echo off" enthalten ist.
Habt ihr da vllt. einen Tipp für mich?
Edit:
Kurz noch mal zur Erklärung.
Wenn ich es so schreibe, funktioniert es super:
@echo off
start C:\Pfad\db1.accdb /x Makro1
::gespeichert als batch_db1
oder
@echo off
start C:\Pfad\db2.accdb /x Makro1
::gespeichert als batch_db2
Wenn ich es so schreibe, führt er nur den ersten Befehl aus:
@echo off
start C:\Pfad\db1.accdb /x Makro1
start C:\Pfad\db2.accdb /x Makro1
Wenn ich es so schreibe, öffnet er für jeden "start" ein extra CMD Fenster:
@echo off
start C:\Pfad\db_batch1
start C:\Pfad\db_batch2
Hallo,
gib an der Eingabeaufforderung "start /?" ein, dann bekommst Du die möglichen cmd-line Parameter für den Start-Befehl angezeigt...
Hallo,
danke schon mal für die Antwort.
Ich versteh die Antwort nicht ganz und wie sie mir bei meinen Problem helfen soll.
Die Parameter habe ich mir schon angeschaut, aber keinen gefunden der mir bei der Problemlösung hilft.
Die Lösung für mein Problem:
ping 127.0.0.1 -n 5 >nul
exit
Hallo,
wenn du in einer Batchdatei mehrere Befehle hintereinander schreibst, wir doch der zweite erst ausgeführt, wenn der erste beendet ist, oder?
Also müsstest du Access jeweils automatisch beenden, oder liege ich da falsch?
Weihnachtliche Grüße
crystal
Nachtrag:
der entscheidende Hinweis befindet sich ziemlich am Ende des Hilfetextes (start /?, Danke DF6GL!).
Wird eine grafische 32-Bit-Anwendung....
Dies gilt NICHT,...
lg
crystal
Zitat von: crystal am Dezember 25, 2016, 12:15:38
wenn du in einer Batchdatei mehrere Befehle hintereinander schreibst, wir doch der zweite erst ausgeführt, wenn der erste beendet ist, oder?
Also müsstest du Access jeweils automatisch beenden, oder liege ich da falsch?
Die Frage habe ich mir in der Tat auch gestellt.
Ich bin aber von der selben Situation ausgegangen wie du. Das ist aber kein Problem denke ich. Störend waren nur die beiden extra CMD Fenster. Aber das funktioniert ja jetzt :)
Gibt es denn eine Funktion in Access die das automatische Beenden erzwingt? Wenn ich im Makro "Schließen Datenbank" auswähle, schließt er mir meine Datenbank, macht aber eine neue auf.
Zitateine Access 2010 Datenbank über die CMD starten lässt und sich die Abfragen über die CMD verändern / ausführen lassen
Wenn Du nicht so fixiert auf CMD und Batch wärst, könnte man als ausführbare Datei, die bspw. per Windows-Aufgabenpaner gestartet wird, auch an eine VBS-Datei denken.
In VBScript kann man praktisch das Gleiche umsetzen wie in VBA, Objekte sind allerdings konsequent per Late Binding einzusetzen, da man in einer Textdatei keine Verweise hinterlegen kann.
Hier wäre ein schlichter Zugriff per DAO (wahlweise ADODB) denkbar, mit dem man Abfrageaktionen ausführen könnte. Ein Öffnen von Access und somit ein Schließen ist da gar nicht notwendig. Ohne Öffnen des großen Access-Objektes wäre das überdies schneller.
Das klingt natürlich nicht verkehrt wenn es performanter ist.
Für Ratschläge bin ich natürlich immer sehr offen. Fixiert bin ich nicht, mir ist bloß nichts anderes eingefallen und VBS / DAO / ADODB kenne ich gar nicht.
Hast du da einige Sachen für mich zum reinlesen?
Wo ist jetzt der genauer Unterschied / Vorteil / Nachteil zu einer Batch Datei? Ich erkenne ihn nicht wirklich.
VBS:
WScript.CreateObject("WScript.Shell").Run "msaccess.exe"
On Error Resume Next
Do
Err.Clear
Set ac = GetObject(, "Access.Application")
Loop Until Err.Number = 0
On Error GoTo 0
ac.OpenCurrentdatabase "C:\Pfad\db1.accdb"
ac.DoCmd.RunMacro "Makro1"
Batch:
@echo off
start C:\Pfad\db1.accdb /x Makro1
ping 127.0.0.1 -n 5 >nul
exit
Außer das ich mehr schreiben muss. Tut mir schon mal Leid für die ganzen Fragen ;D
Zitateinige Sachen für mich zum reinlesen?
VBA-Editor (ALT+F11)
dazu Hilfe (F1)
Thema Access 2010 Entwicklerreferenz
darin Microsoft Datenzugriffsobjekte (DAO) - Referenz
und Referenz zu Microsoft Axtive-Datenobjekten (ADO)
Das ist auch stets benötigtes Handwerkszeug, wenn man einigermaßen in einer Access-DB programmiert.
Zum letzten Beitrag: Wenn Du das Gleiche machst (Makro starten), ist der Aufruf relativ egal.
Ich sprach davon, über das VBS unmittelbar das zu machen, was in Makro1 steht, ohne Öffnen der Datenbank - wenn man jetzt einen Zugriff per DAO/ADO auf eine DB nicht als Öffnen bezeichnet.
Ok dann habe ich dich jetzt verstanden. Und der Zugriff per DAO / ADO ist schneller als das Makro zu starten per VBS / Batch?
Ein Datenbankzugriff erfolgt praktisch unmittelbar.
Wenn Du Deine Datenbank öffnest inklusive dem als Anwendungsprogramm verbundenen Access - wie lange dauert das?