Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: risingstar am Mai 05, 2023, 13:24:21

Titel: Objekt nicht gefunden bei VBA Abfrage per String
Beitrag von: risingstar am Mai 05, 2023, 13:24:21
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
Titel: Re: Objekt nicht gefunden bei VBA Abfrage per String
Beitrag von: MzKlMu am Mai 05, 2023, 14:20:50
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.


Titel: Re: Objekt nicht gefunden bei VBA Abfrage per String
Beitrag von: risingstar am Mai 05, 2023, 15:32:52
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?
Titel: Re: Objekt nicht gefunden bei VBA Abfrage per String
Beitrag von: Beaker s.a. am Mai 05, 2023, 15:37:32
ZitatSonderzeichen und Leerzeichen in Feldnamen sollten unbedingt vermieden werden.
Und in Variablennamen möglichst auch.
Titel: Re: Objekt nicht gefunden bei VBA Abfrage per String
Beitrag von: MzKlMu am Mai 05, 2023, 15:40:56
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.
Titel: Re: Objekt nicht gefunden bei VBA Abfrage per String
Beitrag von: risingstar am Mai 05, 2023, 16:59:23
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
Titel: Re: Objekt nicht gefunden bei VBA Abfrage per String
Beitrag von: MzKlMu am Mai 05, 2023, 17:16:59
Hallo,
die Az um Übergabe sind natürlich falsch, da habe nicht aufgepasst, sorry.
Habe diese oben im Code entfernt.