Office: RunSQL

Helfe beim Thema RunSQL in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo - ich bins schon wieder, aber ich finde den Fehler nicht: Private Sub edScan_AfterUpdate() Dim SQLStr As String SQLStr = "SELECT... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Anna Karl, 25. Mai 2025.

  1. RunSQL


    Hallo - ich bins schon wieder, aber ich finde den Fehler nicht:
    Code:
    Private Sub edScan_AfterUpdate()
      Dim SQLStr As String
      SQLStr = "SELECT tblInstrumente.artID, tblInstrumente.artKennung, tblInstrumente.artArtikel" & _
      " FROM tblInstrumente" & _
      " WHERE ((tblInstrumente.artKennung = edScan.Value) and ((tblInstrumente.artAusgeliehen)=False))"
      DoCmd.RunSQL (SQLStr)
    End Sub
    
    RunSQL verlangt eine Anweisung die aus einer SQL-Anweisung besteht
    Im Abfrageentwurf funktioniert es tadellos
    RunSQL :(
    Sorry
     
    Anna Karl, 25. Mai 2025
    #1
  2. andyfau
    andyfau Erfahrener User
    Kann es sein, dass am Ende, vor den Anführungszeichen eine Semikolon fehlt?
     
    andyfau, 25. Mai 2025
    #2
  3. Doming
    Doming Erfahrener User
    Moin,
    ich vermute mal, dass edScan.Value ein Steuerelement ist und der Wert führende Nullen enthält, demzufolge würde ich es wohl so lösen:
    Code:
       SQLstr =  "SELECT artID, artKennung, artArtikel "  _
              &  "FROM tblInstrumente "  _
              &  "WHERE artKennung = '" & Me.edScan & "' AND Not artAusgeliehen"
       Debug.Print SQLstr
       DoCmd.Execute SQLStr
    Herauskommen sollte im Direktfenster sowas wie
    "SELECT artID, artKennung, artArtikel FROM tblInstrumente WHERE artKennung = '00000000456' AND Not artAusgeliehen"
    Ich habe mir angewöhnt, bei mehrzeiligen Strings das & in die nächste Zeile zu ziehen, dann weiß man gleich, dass die Zeile angeheftet ist. Aber mein zweiter Bildschirm (der mit dem VBA-Editor) steht hochkant, da kann es leichter passieren, dass das Ende der Zeile hinterm rechten Rand verschwindet.
    Gruß
    Doming
     
    Zuletzt bearbeitet: 26. Mai 2025
    Doming, 26. Mai 2025
    #3
  4. RunSQL

    Hallo Doming, hallo andyfau
    @ Domnig:ich habe es so gemacht wie Du es beschrieben hast und es zeigt im Direktfenster auch den angekündigten Satz. Nur der Befehl DoCmd.Execute kennnt mein Access nicht! Es kommt die Fehlermeldung "Methode oder Datenobject nicht gefunden".
    Danke für den Tip mit dem &. Ich hatte auch schon längere Zeilen wo das Ende außerhalb des rechten BS-Rand verschwand.
    Ändere ich es wieder auf RunSQL um habe ich wieder das Problem mit der "nicht gültigen" SQL-Anweisung.
    @andyfau: es klappt auch nicht mit dem ;
    ??????
     
    Anna Karl, 26. Mai 2025
    #4
  5. Doming
    Doming Erfahrener User
    Wie sehen Deine Verweise aus?
    RunSQL upload_2025-5-26_22-21-3.png
     
    Doming, 26. Mai 2025
    #5
  6. Danke für die rasche Antwort. Bei mir sind die gleichen Verweise eingestellt. Ich arbeite mit der Officeversion LTSC Professionel Plus 2021.
    Ich werde das Projekt stilllegen und möchte Euch damit nicht weiter belästigen. Mich wundert nur, dass es mit RunSQL in einem anderen Projekt klappt und diesesmal nicht. Manchmal kommt mir vor, Access hat ein Eigenleben...
    LG Anna
     
    Anna Karl, 27. Mai 2025
    #6
  7. Doming
    Doming Erfahrener User
    Hallo,
    was habe ich denn da geschrieben *vorStirnPatsch"
    Es muss natürlich heißen CurrentDb.Execute....
    ....also manchmal.....
     
    Doming, 27. Mai 2025
    #7
  8. RunSQL

    Hallo Doming Danke für die Korrektur, ich habs probiert - jetzt kommt die Fehlermeldung "Eine Auswahlabfrage kann nicht ausgeführt werden" (Laufzeitfehler 3065) Mein Access liebt mich nicht mehr RunSQL :(
    LG Anna
     
    Anna Karl, 28. Mai 2025
    #8
  9. andyfau
    andyfau Erfahrener User
    CurrentDB.Execute geht nur für Aktionsabfragen, also Aktualisierung, Anfüge, etc.
     
    andyfau, 28. Mai 2025
    #9
  10. Doming
    Doming Erfahrener User
    Hm... natürlich... also was soll die Prozedur eigentlich bewirken, Anna?
    Du scannst den Code und was soll danach passieren?
     
    Doming, 28. Mai 2025
    #10
  11. Hallo
    es sollte nach dem Scan so reagieren, wie wenn ich die Kennzahl aus dem Kombinationsfeld auswähle. Also nachdem die Kennzahl eingescannt wurde soll die Abfrage nach der Scannzahl in tblInstrumente nach der Kennzahl suchen, prüfen ob das Instrument bereits verliehen wurde (artAusgeliehen = false) und den Namen des Instruments anzeigen.
     
    Anna Karl, 30. Mai 2025
    #11
  12. Doming
    Doming Erfahrener User
    Code:
    Private Sub edScan_AfterUpdate()
      Dim SQLStr As String, rs As DAO.Recordset
       SQLstr =  "SELECT artID, artKennung, artArtikel "  _
              &  "FROM tblInstrumente "  _
              &  "WHERE artKennung = '" & Me.edScan & "'")
      Set rs = CurrentDB.OpenRecordset(SQLStr)
       If Not (rs.EOF And rs.BOF) Then
          If rs!artAusgeliehen then
             Me.Kombifeld = rs!artID
             Me.Textfeld = rs.artArtikel
          Else
             Msgbox "Der gewünschte Artikel wurde bereits entliehen"
          End if
       Else
          Msgbox "Kein Artikel unter dieser Nummer"
       End If
       Set rs = Nothing
    End Sub
     
    Doming, 30. Mai 2025
    #12
  13. RunSQL

    Hallo Domnig!
    DANKE , DANKE, DANKE - genau das ist es!
    Ich habe mich mit Recordsets noch nicht beschäftigt und habe somit keine Erfahrung damit, weil ich sie bis dato nicht brauchte.
    Somit habe ich auch nicht gewußt wo man sie einsetzen kann bzw muss.
    Liebe Grüße
    Anna
     
    Anna Karl, 31. Mai 2025
    #13
Thema:

RunSQL

Die Seite wird geladen...
  1. RunSQL - Similar Threads - RunSQL

  2. DoCmd RunSql liefert Fehler in einer Funktion

    in Microsoft Access Hilfe
    DoCmd RunSql liefert Fehler in einer Funktion: Hallo Leute. Mit der folgenden Code in "Private Sub" gibt es kein Problem. Alles läuft super. Ich bruche diesen Code als Function, damit ich es aus einem Makro ausführen lassen möchte (oder...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden