kann ich ohne große Umstände eine *.sql gegen eine AccessDB laufen lassen? Es ist mir nämlich zu doof meine Anweisungen (x create table, alter table, inserts usw.) einzeln in jeweils eine „Abfrage“ zu packen und dann jede einzeln auszuführen. Von VBA aus vielleicht oder per Kommandozeile?
vielen Dank für deine Antwort, leider ist das nicht was ich suche, was du schreibst ist mir bekannt, bringt aber nichts, da:
jeweils ein RunSQL nur eine Anweisung (also nur ein Create oder Select oder oder oder akzeptiert)
ich erst den String auf eine Zeile bringen muss oder aber noch Listenverkettungszeichen (hier gleich zwei bzw. sogar drei: " _ &:wink: einfügen muss.
Das ist am Ende genauso ineffizient wie das Anlegen einer „Abfrage“ und einzelne einfügen des jeweiligen SQL-Strings.
Nochmal zum Verständnis, ich hab eine Datei.SQL in der liegen nacheinander mehrere SQL-Anweisungen, die will ich nich auseinandernehmen, nich wenn ich nich muss.
hier ein Beispiel, in dem ich eine Datei einlese und Zeile für Zeile abarbeite (sowie den Input zurechtschneide und noch ein fehlendes Feld im String ergänze). Nur so zur Anregung. Dateinahme ist im Feld Text1 zwischengespeichert.
Dim stInput As String
Dim stVergleich As String
Dim intZähler As Integer
Dim stQuelle As String
If Me![Text1] = „“ Or IsNull(Me![Text1]) = True Then
MsgBox („Bitte wählen Sie zuerst eine gültige Importdatei aus!“)
Exit Sub
Else
stQuelle = Me![Text1]
End If
stVergleich = Chr$(34)
If Dir(stQuelle) = „“ Or IsNull(stQuelle) Then
MsgBox („Datei konnte nicht gefunden werden!!“)
Exit Sub
Else
'Nichts tun
End If
Open stQuelle For Input As #1 'Speicherort der SQL-Datei
DoCmd.SetWarnings False
Do While Not EOF(1)
Line Input #1, stInput
intZähler = InStr(stInput, stVergleich)
stInput = Right(stInput, (Len(stInput) - intZähler)) 'Schneidet alles links inklusive Anführungszeichen ab
intZähler = InStr(stInput, stVergleich)
stInput = Left(stInput, (intZähler - 1)) 'Schneidet alles rechts inklusive Anführungszeichen ab
stInput = Left(stInput, (Len(stInput) - 2))
stInput = stInput & „,NULL);“
DoCmd.RunSQL stInput
Loop