Hallo
Rufe ich eine Abfrage in VBA auf, dei in Access erstellt wurde, funktioniert die Abfrage.
Rufe ich die geleiche Abfrage als Strin in VBA auf, dann kommt die Fehlermeldung "Objekt nicht gefunden".
Kann mir bitte jemand helfen, wo der Fehler ist.
Danke Friedrich
Private Sub Umschaltfläche43_Click()
Dim Übergabe As String
Dim Verzeichnis As String
Dim Test As String
Verzeichnis = DLookup("[VerzeichnisTabellen]", "Stammdaten", "[ID]=1")
'Debug.Print Verzeichnis
Übergabe = "INSERT INTO LadeVorgängeSBG ( [Charging Station ID], Serial, [RFID Card], Status, Start, [End], [Meter at start (Wh)], [Meter at end (Wh)] ) " _
& "IN '" & Verzeichnis & "' " _
& "SELECT LadeVorgängeSBG.[Charging Station ID], LadeVorgängeSBG.Serial, LadeVorgängeSBG.[RFID Card], LadeVorgängeSBG.Status, LadeVorgängeSBG.Start, LadeVorgängeSBG.End, LadeVorgängeSBG.[Meter at start (Wh)], LadeVorgängeSBG.[Meter at end (Wh)] " _
& "FROM LadeVorgängeSBG " _
& "WHERE (((LadeVorgängeSBG.Übergabe)=False));"
Debug.Print Übergabe
DoCmd.OpenQuery Übergabe
'DoCmd.OpenQuery "qryÜbergabe" 'mit Access erstellte Abfrage
DoCmd.OpenQuery "qryÜbergabeAktualisieren"
End Sub
Hallo,
Aktionsabfrage werden mit Execute ausgeführt. Der Code kann auch noch gekürzt werden.
Private Sub Umschaltfläche43_Click()
Dim Übergabe As String, Verzeichnis As String
Verzeichnis = DLookup("[VerzeichnisTabellen]", "Stammdaten", "[ID]=1")
Übergabe = "INSERT INTO LadeVorgängeSBG ( [Charging Station ID], Serial, [RFID Card], Status, Start, [End], [Meter at start (Wh)], [Meter at end (Wh)] ) " _
& "IN '" & Verzeichnis & "' " _
& "SELECT [Charging Station ID], Serial, [RFID Card], Status, Start, End, [Meter at start (Wh)], [Meter at end (Wh)] " _
& "FROM LadeVorgängeSBG WHERE Übergabe=False"
Debug.Print Übergabe
CurrentDb.Execute Übergabe, dbFailOnError
End Sub
Zeige bitte mal den String den "Debug.Print Übergabe" ausgibt.
Diesen String kann man auch in die SQL Sicht einer Abfrage kopieren. Dann erhält man auch gezielt Hinweise.
Wieso verwendest Du eine Umschaltfläche zur Ausführung des Codes ?
PS:
Solche Feldnamen [Meter at end (Wh)] sind eine Katastrophe. Sonderzeichen und Leerzeichen in Feldnamen sollten unbedingt vermieden werden.
Und nutze für Codedarstellungen die Codetags des Forums.
Hallo Klaus,
danke für die erste Hilfe.
Die Feldnamen wurden aus dem Download einer E-Ladestation übernommen.
Hier der String. Der sieht genauso aus wie jener in der von Access erstellten SQL-Abfrage. Dort funktioniert er. Kopiere ich den String in die SQL Ansicht in Access, funktioniert er auch.
INSERT INTO LadeVorgängeSBG ( [Charging Station ID], Serial, [RFID Card], Status, Start, [End], [Meter at start (Wh)], [Meter at end (Wh)] ) IN 'Z:\Access Tabellen\eMobility, Schlüssel, Stapler 2022 Tabellen.accdb' SELECT LadeVorgängeSBG.[Charging Station ID], LadeVorgängeSBG.Serial, LadeVorgängeSBG.[RFID Card], LadeVorgängeSBG.Status, LadeVorgängeSBG.Start, LadeVorgängeSBG.End, LadeVorgängeSBG.[Meter at start (Wh)], LadeVorgängeSBG.[Meter at end (Wh)] FROM LadeVorgängeSBG WHERE (((LadeVorgängeSBG.Übergabe)=False));
Die Umschaltfläche verwende ich, um aus einem Formular heraus die Übertragung durch einen Klick durchzuführen.
Wie rufe ich die Abfrage mit "Execute" auf?
ZitatSonderzeichen und Leerzeichen in Feldnamen sollten unbedingt vermieden werden.
Und in Variablennamen möglichst auch.
Hallo,
ZitatWie rufe ich die Abfrage mit "Execute" auf?
Kannst Du doch im Code meiner Antwort sehen, in der Zeile vor End Sub
ZitatDie Umschaltfläche verwende ich, .....
Aber dazu braucht es doch keine Umschlatfläche. Das macht ein normaler Befehlsbutton auch.
Hallo Klaus,
danke für die Hilfe. Mit Execute ohne die Anführungszeichen bei Übergabe funktioniert es jetzt.
Die Sache mit der Befehlsschaltfläche werde ich noch probieren. Man lernt eben nie aus.
LG Friedrich
Hallo,
die Az um Übergabe sind natürlich falsch, da habe nicht aufgepasst, sorry.
Habe diese oben im Code entfernt.