Neuigkeiten:

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

Mobiles Hauptmenü

Objekt nicht gefunden bei VBA Abfrage per String

Begonnen von risingstar, Mai 05, 2023, 13:24:21

⏪ vorheriges - nächstes ⏩

risingstar

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

MzKlMu

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


Gruß Klaus

risingstar

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?

Beaker s.a.

ZitatSonderzeichen und Leerzeichen in Feldnamen sollten unbedingt vermieden werden.
Und in Variablennamen möglichst auch.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

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

risingstar

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

MzKlMu

#6
Hallo,
die Az um Übergabe sind natürlich falsch, da habe nicht aufgepasst, sorry.
Habe diese oben im Code entfernt.
Gruß Klaus