Office: (Office 2013) INSERT INTO klappt nicht

Helfe beim Thema INSERT INTO klappt nicht in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo und guten Morgen zusammen, ich möchte den angezeigten/eingegebenen Formularinhalt in eine Tabelle speichern, erhalte jedoch den Laufzeitfehler... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von schwaelbchen, 25. März 2017.

  1. INSERT INTO klappt nicht


    Hallo und guten Morgen zusammen,

    ich möchte den angezeigten/eingegebenen Formularinhalt in eine Tabelle speichern, erhalte jedoch den Laufzeitfehler '3075': Synaxfehler (fehlender Operator) in Abfrageausdruck angezeigt.

    Ich komme einfach nicht drauf woran es liegt. *frown.gif*
    Danke für Deine Hilfe im Voraus.


    Private Sub btn_save_Click()

    CurrentDb.Execute _
    "INSERT INTO Checkliste2 (Datum, Shipment, PAL, CRT, ADR, PAL_all, CRT_all, Containernummer, Spediteur, Kennzeichen, Ladezeit_von) " _
    & "SELECT " & "'" & Me.Controls("Text7").Value & ", " _
    & "'" & Me.Controls("Text13").Value & ", " _
    & "'" & Me.Controls("Text5").Value & ", " _
    & "'" & Me.Controls("Text9").Value & ", " _
    & "'" & Me.Controls("Text15").Value & ", " _
    & "'" & Me.Controls("Text35").Value & ", " _
    & "'" & Me.Controls("Text36").Value & ", " _
    & "'" & Me.Controls("Text30").Value & ", " _
    & "'" & Me.Controls("Text33").Value & ", " _
    & "'" & Me.Controls("Text33").Value & ", " _
    & "'" & Me.Controls("Text29").Value & ", ", dbFailOnError

    End Sub


    :)
     
    schwaelbchen, 25. März 2017
    #1
  2. Baue Dir erst mal den String einzeln zusammen und lass ihn mal per debug.print ausgeben.

    Du beginnst vor jedem Control mit einem Hochkomma, beendest das aber nicht.
    (Text mit Hochkommata, Zahlenfelder ohne)
     
    fraeser, 26. März 2017
    #2
  3. Hallo Jan,

    mal andersrum gefragt.

    Meine Zieltabelle enthält mehr Spalten, als ich mit dem INSERT INTO übergeben will. Gibt es dabei ggf. noch etwas zu beachten ?
     
    schwaelbchen, 26. März 2017
    #3
  4. INSERT INTO klappt nicht

    Nein,
    Du gibst die Zielspalten der Tabelle ja explizit an!
    Wenn Du da 11 Felder hast, müssen auch 11 - in der richtigen Reihenfolge - übergeben werden.
    Aber schauen, welches Textfelder, Zahlenfelder oder Datumsfelder sind.
    Dementsprechend korrekt übergeben.
     
    fraeser, 26. März 2017
    #4
  5. PS: Das Feld "Datum" auf jedenfall umbenennen!
     
    fraeser, 26. März 2017
    #5
  6. Ok, gut zu wissen.

    Ich hab es jetzt auch mal mit folgendem Code probiert:

    Dim strSQL As String
    strSQL = "INSERT INTO tbl_Checkliste2 ( Datum, Shipment, PAL, CRT, ADR, Containernummer, Spediteur, Kennzeichen, Ladezeit_von )"
    strSQL = strSQL & " SELECT Text7, Text13, Text5, Text9, Text15, Text30, Text32, Text33, Text29"
    CurrentDb.Execute strSQL, dbFailOnError


    Jedoch erscheint nun Laufzeitfehler 3061
    9 Parameter wurden erwartet, aber es wurden zu wenige Parameter übergeben.

    Versteh ich nicht .. wobei die Anzahl an Feldern übereinstimmt ... *frown.gif*
     
    schwaelbchen, 26. März 2017
    #6
  7. Hab den ersten Code entsprechend Deiner Angaben korrigiert ... jedoch erscheint hier auch (ähnlich):

    Laufzeitfehler 3346: Anzahl der Abfragewerte und Zielfelder stimmt nicht überein

    CurrentDb.Execute _
    "INSERT INTO tbl_Checkliste2 (Ladedatum, Shipment, PAL, CRT, ADR, Containernummer, Spediteur, Kennzeichen, Ladezeit_von) " _
    & "SELECT " & "" & Me.Controls("Text7").Value & ", " _
    & "" & Me.Controls("Text13").Value & ", " _
    & "" & Me.Controls("Text5").Value & ", " _
    & "" & Me.Controls("Text9").Value & ", " _
    & "" & Me.Controls("Text15").Value & ", " _
    & "'" & Me.Controls("Text30").Value & ", " _
    & "'" & Me.Controls("Text32").Value & ", " _
    & "'" & Me.Controls("Text33").Value & ", " _
    & "" & Me.Controls("Text29").Value & ", ", dbFailOnError
     
    schwaelbchen, 26. März 2017
    #7
  8. INSERT INTO klappt nicht

    Wenn Daten nicht von einer Tabelle ausgewählt werden, dann nimmt für das INSERT eigentlich die VALUES-Anweisung.
    Und "Datum" ist noch immer ein reserviertes Wort, weswegen du eigentlich eckige Klammern drum packen müsstest. Aber umbenennen ist in dem Fall einfach besser.
     
    Toast78, 26. März 2017
    #8
  9. In meinem Fall werden nur die rot markierten Felder per Hands ins Formular eingegeben. Die anderen werden teilweise durch eine Formel erzeugt, bzw. werden von einem anderen Formular heraus angezeigt.

    Wie müsste das denn dann mit dem VALLUES aussehen ?

    CurrentDb.Execute _
    "INSERT INTO tbl_Checkliste2 ([Ladedatum], [Shipment], [PAL], [CRT], [ADR], [Containernummer], [Spediteur], [Kennzeichen], [Ladezeit_von]) " _
    & " SELECT " & "" & Me.Controls("Text7").Value & ", " _
    & "" & Me.Controls("Text13").Value & ", " _
    & "" & Me.Controls("Text5").Value & ", " _
    & "" & Me.Controls("Text9").Value & ", " _
    & "" & Me.Controls("Text15").Value & ", " _
    & "'" & Me.Controls("Text30").Value & ", " _
    & "'" & Me.Controls("Text32").Value & ", " _
    & "'" & Me.Controls("Text33").Value & ", " _

    & "" & Me.Controls("Text29").Value & ", ", dbFailOnError
     
    schwaelbchen, 26. März 2017
    #9
  10. Code:
     
    Toast78, 27. März 2017
    #10
  11. Hallo Jens,
    Es wurde schon mehrfach darauf hingewiesen; - du musst die Datentypen der
    Felder, die du beschreiben willst beachten, und die VALUES entsprechen formatieren.
    Beispiel Ladedatum (ist ja wohl vom Typ Datum)
    Code:
    bei Textfeldern
    Code:
    beim Datentyp "Zahl" braucht es gar keine Hochkommata.
    Code:
    gruss ekkehard

    edit:
    PS: Ob die Daten dabei per SELECT oder VALUES übergeben werden spielt
    dabei erstmal keine Rolle.
     
    Beaker s.a., 27. März 2017
    #11
  12. Ich habe kürzlich ein sehr ausführliches Video-Tutorial veröffentlicht, das dir weiterhelfen könnte.

    Ein paar konkrete Punkte die du beachten/prüfen solltest:
    • Die Text-Begrenzer (') für die Felder sind in deinem SQL nicht konsistent.
    • Datumsfelder müssen mit # begrenzt werden und explizit im ISO- oder US-Format formatiert werden.
    • Steuerelemente einfach als TextXY zu benennen ist eine schlechte Idee.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  13. INSERT INTO klappt nicht

    Es ist doch viel einfacher mit einem Recordset zu arbeiten.
    Dann musst du dich weder um Datentypen kümmern noch einen String zusammenstückeln. Wenn du den Textfeldern dann noch sinnvolle Namen gibst - In der Regel nimmt man die Namen der Tabellenfelder, gibts auch keine Fehler.

    LG Markus
     
    markusxy, 27. März 2017
    #13
  14. Das wäre nur problematisch, wenn die unberücksichtigten Felder Pflichtfelder sind. Etwas Kenntnis der Tabellendefinition hilft da weiter.
    Wenn die Anzahl der Feldauflistung für die Zieltabelle mit den zugeordneten Werten übereinstimmt und trotzdem dieser Fehler auftritt, hat man es wahrscheinlich mit Dezimalzahlen zu tun, das Komma als Dezimaltrenner in deutschen Einstellungen wird als Feldtrenner interpretiert und lässt den SQL-Interpreter weitere Felder vermuten. Folglich sollte man auf passende Wertformatierungen nicht nur bei Texten und Datumswerten achten, sondern generell. Siehe auch Grundlagen - SQL ist leicht (5) - Datentypbehandlung für VBA
    Try & Error kann sehr langwierig und ermüdend sein. Sinnvoller dürfte es sein, systematisch zu arbeiten.

    Da mir nur einfaches Denken gegönnt ist, verfahre ich da nach folgender Weise: Auch wenn man eine SQL-Anweisung in VBA-Code einbettet und irgendwie zusammensetzt, muss am Ende eine ausführbare Anweisung an die Datenbankmaschine übergeben werden. Also nimmt man die gewünschte ausführbare Anweisung (Prüfung per Syntaxkenntnis zzgl. praktischer Ausführungstest) und vergleicht diese mit dem Ergebnis der Codezusammensetzerei in VBA, was sich über ein Debug.Print strSQL ins Direktfenster ausgeben lässt.
    Hier zeigt sich auch, dass es vorteilhaft ist, die Stringzusammensetzung in einer Variablen vorzunehmen, weil man hier über die Prüfung eine Mehrverwendung des Inhaltes hat, womit dann eine Variable als Verweis auf diesen Inhalt vorteilhaft ist.

    Wenn man nun eine fertige funktionierende Anweisung mit dem Ergebnis seiner Code-Tätigkeit vergleicht, leiten sich dann bei Unterschieden automatisch notwendige Korrekturmaßnahmen ab.
     
  15. Danke an dieser Stelle für Eure Tipps.
    Hab es nun mal mit nur 1 TEXT-Feld probiert und bin mit beiden Codes gescheitert ... versteh nu gar nix mehr. *frown.gif*

    CurrentDb.Execute _
    "INSERT INTO tbl_Checkliste2 (Kennzeichen) " _
    & "SELECT " & "'" & Me.Controls("Text33").Value & ", ", dbFailOnError


    Laufzeitfehler 3075
    Syntaxfehler in Zeichenfolge in Abfrageausdruck "123ABC"

    ------------------------------------------------------------------------

    Dim strSQL As String
    strSQL = "INSERT INTO tbl_Checkliste2 ( Kennzeichen )"
    strSQL = strSQL & " SELECT Text33"
    CurrentDb.Execute strSQL, dbFailOnError


    Laufzeitfehler 3061
    1 Parameter wurden erwartet, aber es wurden zu wenige Parameter übergeben.
     
    schwaelbchen, 27. März 2017
    #15
Thema:

INSERT INTO klappt nicht

Die Seite wird geladen...
  1. INSERT INTO klappt nicht - Similar Threads - INSERT INTO klappt

  2. MS ACCESS Insert into Foto in Datenbank

    in Microsoft Access Hilfe
    MS ACCESS Insert into Foto in Datenbank: Hallo. Ich benutze MS ACCESS im Office 365. Habe eine Anwendung geschrieben, in der in einem Formular ein Foto im Typ Bild dargestellt wird. Ich möchte nun dieses Foto mittels einem "Insert...
  3. Info über SQL INSERT INTO

    in Microsoft Access Hilfe
    Info über SQL INSERT INTO: Hi, ich wollte gerne wissen ob man bei einem neuen Datensatz in der Haupttabelle gleich in die Untertabelle schreiben kann. Wenn ja, wie? Wenn nein, welche referenzen von der Haupttabelle muss...
  4. db.Execute " INSERT INTO

    in Microsoft Access Hilfe
    db.Execute " INSERT INTO: Hallo Leute, sehe den Wald vor lauter Bäumen nicht.... kann mir jemand helfen den Knopf zu lösen? Ich erhalte immer die Fehlermeldung: "ein Parameter wurde erwartet, aber es wurden zu wenig...
  5. Datum per Insert Into in Tabelle einfügen mit Where

    in Microsoft Access Hilfe
    Datum per Insert Into in Tabelle einfügen mit Where: Hallo, ich stehe mal wieder vor einem Problem, an dem ich nicht weiter komme und bereits fast den ganzen Tag ohne Erfolg rummgoogle. *entsetzt Ich habe in einer Tabelle Datensätze die jeweils...
  6. Mehrwertige Felder: INSERT INTO von Zellinhalten mit recordset2

    in Microsoft Access Hilfe
    Mehrwertige Felder: INSERT INTO von Zellinhalten mit recordset2: Hallo versierte ACCESS-User und vielleicht Bezwinger der "Mehrwertigen Felder" Ziel der 'Sub': In der Tabelle T2_Ziel werden die Einträge von Tabelle T1_Quelle übernommen, die bzgl....
  7. Insert Into aus Formular in Tabelle

    in Microsoft Access Hilfe
    Insert Into aus Formular in Tabelle: Hallo zusammen, ich habe mir überlegt ob man Werte aus einer Textbox über insert into in eine Tabelle schreibenm kann. Folgendes Schema schwebt mir vor: INSERT INTO Zieltabelle (Feldname1,...
  8. INSERT INTO-Anweisung

    in Microsoft Access Tutorials
    INSERT INTO-Anweisung: INSERT INTO-Anweisung Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr... Weniger...
  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