1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Syntax-Fehler in der INSERT INTO Anweisung

Dieses Thema im Forum "Microsoft Access" wurde erstellt von Micxas, 8 Juni 2015.

  1. Micxas

    Micxas Benutzer

    Hallo zusammen,

    ich heiße Mario und verzweifle an einer simplen INSERT INTO Anweisung! Folgende Anweisung enthält einen Syntaxfehler:

    INSERT INTO TblAuftraege (AuftragsNr, Position, Jahr, Woche, KundenNr, ArtikelNr, Menge, Einheit, Bemerkung, Verpackung) VALUES (12345, 100, 2016, 15, 12345, 99999, 1250, 'Stück', 'keine', 'Wellpappkiste auf Pressholzpalette')

    Der Zugriff auf die Access 2007-Datenbank folgt aus einem VB.NET Programm über Microsoft.ACE.OLEDB.12.0! Der Comipiler spuckt mir bei der Anweisung folgenden Fehler aus:

    Syntaxfehler in der INSERT INTO-Anweisung.

    Übrigens, folgende Beispiel-Anweisung funktioniert aus gleicher Applikation fehlerfrei:

    INSERT INTO TblArtikel_neu (ArtikelNr, Durchmesser_mm, Wandstärke_mm, Fixlänge_mm, FixMinTol_mm, FixPlusTol_mm, Legierung, UQNs, Chargentrennung, Entgraten, TIR_mm, Bemerkung) Values (77777, 150, 10, 235.25, 0.05, 0.05, 7153, 'keine', True, 'Nein', 0.05, 'keine')


    Wo liegt mein Fehler? Kann mir da jemand vielleicht einen Tip geben?

    Gruß,

    Mario
     
  2. Distrilec

    Distrilec Datenbank-Guru

    1. Gibt es die Tabelle?
    2. Gibt es alle Spalten?
    3. Sind die Datentypen korrekt?

    Die ersten Fragen die ich mir stellen würde... Und wir dir leider nicht beantworten können...
     
  3. Micxas

    Micxas Benutzer

    Hallo,

    danke für die schnelle Antwort.

    Die Punkte 1 bis 3 habe ich vor dem Posting natürlich mehrfach überprüft. Ich kann mit der Tabelle ansonsten ganz normal arbeiten, z.B. die Datenabfrage funktioniert fehlerfrei.

    Ich kann mir diesen Fehler nicht erklären.

    Gruß,

    Mario
     
  4. Distrilec

    Distrilec Datenbank-Guru

    1. Berechtigungen überprüft?
    2. Semikolon am Ende vergessen?
    3. Text länger als der Datentyp es zulässt ?

    Kannst du das Statement mal direkt ausführen... Nicht über den Umweg VB ?
     
  5. Micxas

    Micxas Benutzer

    Hallo,

    das war ein guter Tip. Danke! Habe das Statement jetzt mal über ein VBA-Modul in Access mit dem Befehl:

    DoCmd.RunSQL "INSERT INTO TblAuftraege (AuftragsNr, ..."


    laufen lassen.

    Der Datensatz wurde dabei erfolgreich eingefügt. Somit liegt der Fehler wohl irgendwo in meiner VB.NET Applikation.

    Gruß,

    Mario
     
  6. Micxas

    Micxas Benutzer

    Hallo nochmal,

    ich verzweifel. Ich finde den Fehler nicht.

    Folgende Funktion führe ich aus der VB.NET Applikation aus:

    Code:
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
                 Dim auftragString As String = "INSERT INTO TblAuftraege(AuftragsNr, Position, " & _
                "Jahr, Woche, KundenNr, ArtikelNr, Menge, Einheit, " & _
                "Bemerkung, Verpackung) VALUES (" & _
                "12345, 100, 2015, 15, 12345, 99999, 1500, 'kg', 'keine', 'Gitterbox');"
    
                Dim artikelString As String = "INSERT INTO TblArtikel_neu (ArtikelNr, Durchmesser_mm, Wandstärke_mm, " & _
               "Fixlänge_mm, FixMinTol_mm, FixPlusTol_mm, Legierung, UQNs, Chargentrennung, " & _
               "Entgraten, TIR_mm, Bemerkung) Values (" & _
               "11111, 115.5, 20.45, 100.5, 0.5, 0.5, 1234, 'keine', true, 'Hand', 0.06, 'keine');"
    
                insertData(artikelString) 'Funktioniert Fehlerfrei
                insertData(auftragString) ' Wirft Syntaxfehler
    
      End Sub
    
    
      Sub insertData(ByVal sqlString As String)
               Dim ConnString As String = _
                             "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                             "Data Source = "C:\Fertigung2015.accdb"
               Dim con As New OleDb.OleDbConnection
               Try
                      Dim anzahl As Integer = 0
                      con.ConnectionString = ConnString
                      con.Open()
                      Using cmd As New OleDb.OleDbCommand(sqlString, con)
                            System.Console.WriteLine(cmd.CommandText)
                           anzahl = cmd.ExecuteNonQuery()
                      End Using
                      MsgBox("Datensatz erfolgreich eingepflegt!", vbInformation)
                 Catch ex As Exception
                       MsgBox(ex.Message)
                 Finally
                       con.Close()
                End Try
      End Sub
    Ich nutze die insertData-Methode seit langem problemlos. Sie wirft nur bei dem auftragString einen Syntaxfehler aus. Das komische ist, das der GLEICHE (!!!) String in Access in einem Modul mittels DoCmd problemlos funktioniert.

    Ich verstehe die Welt nicht mehr! :-(

    Gruß,

    Mario
     
    Zuletzt von einem Moderator bearbeitet: 9 Juni 2015
  7. akretschmer

    akretschmer Datenbank-Guru

    Dafür gibt es sicher geeignetere Foren als diese, denk ich mal...
     
  8. Micxas

    Micxas Benutzer

    Ok ... hab´s mal direkt ins msdn-Forum gepostet.

    Danke trotzdem für eure Hilfe! ;-)
     
  9. Micxas

    Micxas Benutzer

    Hallo zusammen,

    möchte hier kurz die Lösung präsentieren ;).

    Der Fehler wurde durch die Spalte 'Position' herrvorgerufen. Nachdem ich die Spalte umbenannt habe, funktionierte das Einfügen wieder.
    Unglaublich, oder? Anscheinend darf man in der Konstellation, in der ich Daten einpflege, Spalten nicht mit 'Position' benennen.

    Naja ... man lernt nie aus.

    Auf jeden Fall danke für euren Support! ;-)

    Gruß,

    Mario
     
  10. akretschmer

    akretschmer Datenbank-Guru

    passend Quoten. Jede Sprache hat reservierte Wörter.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden