Matthias Francke: "Maximum Tables in SELECT" Fehler bei SQL INSERT

Mahlzeit!

Ich versuche über das folgenden Kommando

sql="INSERT INTO literatur VALUES ('"& nname & "','" & Vname & "','" & eautor & "','" & zautor & "','" & cautor & "','" & typ & "','" & journal & "','" & jahr & "','" & vol & "','" & nr & "','" & seiten & "','" & titel & "','" & foerderung & "','" & verfahren & "','" & organsystem & "','" & anatomie & "','" & thema & "','" & empfaenger & "','" & foerderer & "');"

Daten in eine Tabelle zu schreiben und bekomme immer die Meldung

Microsoft OLE DB Provider for ODBC Drivers- Fehler '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Anzahl der Abfragewerte und Zielfelder stimmt nicht überein.

Ich habe nun über conn.properties raus gefunden, daß der Wert in "Maximum Tables in SELECT" auf 16 steht.
Kann das der Grund für die Fehlermeldung sein?
Wenn ja wie kann ich ihn am besten umgehen?

Ich würde mich freuen wenn mir jemand einen ernstgemeinten Tip geben könnte.

Vielen Dank im Voraus

Matthias

  1. Hallo,

    sql="INSERT INTO literatur VALUES ('"& nname & "','" & Vname & "','" & eautor & "','" & zautor & "','" & cautor & "','" & typ & "','" & journal & "','" & jahr & "','" & vol & "','" & nr & "','" & seiten & "','" & titel & "','" & foerderung & "','" & verfahren & "','" & organsystem & "','" & anatomie & "','" & thema & "','" & empfaenger & "','" & foerderer & "');"

    Ändere das mal in:

    sql="INSERT INTO literatur (<spalte1>, <spalte2>, ...) VALUES ('"& nname & "','" & Vname & "','" & eautor & "','" & zautor & "','" & cautor & "','" & typ & "','" & journal & "','" & jahr & "','" & vol & "','" & nr & "','" & seiten & "','" & titel & "','" & foerderung & "','" & verfahren & "','" & organsystem & "','" & anatomie & "','" & thema & "','" & empfaenger & "','" & foerderer & "');"

    Auch wenns normalerweise so geht, könnte dies dein Problem sein,
    wenn es IDENTITY Werte, ... gibt. Für <spalte1>, ... musst du
    übrigens die Spaltennamen deiner Tabelle einfügen. Und darauf
    achten, dass Spalten und der Wert an der jeweils übereinstimmen
    Position stehen. Hier hilft die evtl. eine andere Formatierung.

    strSQL = "INSERT INTO tabelle (" & _
                 "spalte1, " & _
                 "spalte2, " & _
                 "spalte3 " & _
             ") VALUES (" & _
                 "'" & wert1 & "', " & _
                 "'" & wert2 & "', " & _
                 "'" & wert3 & "')"

    Ich habe nun über conn.properties raus gefunden, daß der Wert in "Maximum Tables in SELECT" auf 16 steht.
    Kann das der Grund für die Fehlermeldung sein?

    Nein, wenn der Wert "MAXIMUM Columns in INSERT" heissen würde.

    Tschau, Stefan

    1. Hallo,

      sql="INSERT INTO literatur VALUES ('"& nname & "','" & Vname & "','" & eautor & "','" & zautor & "','" & cautor & "','" & typ & "','" & journal & "','" & jahr & "','" & vol & "','" & nr & "','" & seiten & "','" & titel & "','" & foerderung & "','" & verfahren & "','" & organsystem & "','" & anatomie & "','" & thema & "','" & empfaenger & "','" & foerderer & "');"

      Ändere das mal in:

      sql="INSERT INTO literatur (<spalte1>, <spalte2>, ...) VALUES ('"& nname & "','" & Vname & "','" & eautor & "','" & zautor & "','" & cautor & "','" & typ & "','" & journal & "','" & jahr & "','" & vol & "','" & nr & "','" & seiten & "','" & titel & "','" & foerderung & "','" & verfahren & "','" & organsystem & "','" & anatomie & "','" & thema & "','" & empfaenger & "','" & foerderer & "');"

      Auch wenns normalerweise so geht, könnte dies dein Problem sein,
      wenn es IDENTITY Werte, ... gibt. Für <spalte1>, ... musst du
      übrigens die Spaltennamen deiner Tabelle einfügen. Und darauf
      achten, dass Spalten und der Wert an der jeweils übereinstimmen
      Position stehen. Hier hilft die evtl. eine andere Formatierung.

      strSQL = "INSERT INTO tabelle (" & _
                   "spalte1, " & _
                   "spalte2, " & _
                   "spalte3 " & _
               ") VALUES (" & _
                   "'" & wert1 & "', " & _
                   "'" & wert2 & "', " & _
                   "'" & wert3 & "')"

      Ich habe nun über conn.properties raus gefunden, daß der Wert in "Maximum Tables in SELECT" auf 16 steht.
      Kann das der Grund für die Fehlermeldung sein?

      Nein, wenn der Wert "MAXIMUM Columns in INSERT" heissen würde.

      Tschau, Stefan

      Hallo Stefan,

      ich hab den command folgendemaßen abgeändert:

      sql="INSERT INTO literatur (nname ,vname, eautor, zautor, cautor ,typ ,journal ,jahr ,vol ,nr ,seiten ,titel ,foerderung ,verfahren ,organsystem ,anatomie ,thema ,empfaenger ,foerderer) VALUES ("
      sql = sql & "'" & nname & "',"
      sql = sql & "'" & vname & "',"
      sql = sql & "'" & eautor & "',"
      sql = sql & "'" & zautor & "',"
      sql = sql & "'" & cautor & "',"
      sql = sql & "'" & typ & "',"
      sql = sql & "'" & journal & "',"
      sql = sql & "'" & jahr & "',"
      sql = sql & "'" & vol & "',"
      sql = sql & "'" & nr & "',"
      sql = sql & "'" & seiten & "',"
      sql = sql & "'" & titel & "',"
      sql = sql & "'" & foerderung & "',"
      sql = sql & "'" & verfahren & "',"
      sql = sql & "'" & organsystem & "',"
      sql = sql & "'" & anatomie & "',"
      sql = sql & "'" & thema & "',"
      sql = sql & "'" & empfaenger & "',"
      sql = sql & "'" & foerderer & "');"

      und bekomme nun die folgenden Meldung:

      [Microsoft][ODBC Microsoft Access Driver] Die INSERT INTO-Anweisung enthält folgenden unbekannten Feldnamen: 'foerderer'. Stellen Sie sicher, dass Sie den Namen richtig eingegeben haben, und führen Sie dann die Operation nochmals aus.

      Einen Fehler kann ich da aber leider nicht erkennen.

      Wäre nett wenn Du mir noch einmal einen kleinen Hinweis geben könntest.

      Vielen Dank

      Matthias

      1. Hallo,

        [Microsoft][ODBC Microsoft Access Driver] Die INSERT INTO-Anweisung enthält folgenden unbekannten Feldnamen: 'foerderer'. Stellen Sie sicher, dass Sie den Namen richtig eingegeben haben, und führen Sie dann die Operation nochmals aus.

        Einen Fehler kann ich da aber leider nicht erkennen.

        Der Fehler steht doch da. Du hast eine Spalte mit dem Namen
        "forderer" in deinem SQL Statement stehen. In der Tabelle
        die du updaten willst, findest Access diese Spalte aber
        nicht.

        Tschau, Stefan