ERROR [07002] - Parameter wurden erwartet! - welche Parameter?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Hinti.

    ERROR [07002] - Parameter wurden erwartet! - welche Parameter?

    Guten Morgen!

    Ich setze einen SQL Befehl ab (ExecuteNonQuery), einen Updatebefehl. Der Commandtext lautet:
    "UPDATE Resistor SET bauform = "0102M", tolerance = 1, leistung = 0.2 WHERE part_no = "050003724""

    Kann hier wer einen Fehler erkennen? Denn ich erhalte den Fehler:
    "ERROR [07002] [Microsoft][ODBC-Treiber für Microsoft Access] 2 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben."

    Dahinter steckt eine Verbindung zu einer Access Datenbank.
    Wenn ich den String 1:1 in Access ausführe, funktioniert es einwandfrei. Deshalb bin ich verwirrt und komm nicht drauf!

    Danke für Hinweise. Beim googlen oder bingen (seit gestern) werd ich nämlich gerad auch nicht schlauer :(

    #UPDATE:
    Himmel tu dich auf. Da google ich wie blöd. Und dann poste ich hier verzweifelt, und keine 5 Minuten später ersetze ich die Hochkommas durch die einfachen, und schon gehts!

    Aber vielleicht braucht ja wer anderes mal diese Lösung ;)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Hinti“ ()

    ErfinderDesRades schrieb:

    Mit Tipp & Trick: DbParameter wär das nicht passiert :P

    Hallo,
    Möchte mich auch dafür jetzt bedanken. Nun wo du mich darauf hingewiesen hast, habe ich es auf odbcCommand.Parameters umgebaut. Viel sauberer und funktioniert hervorragend.

    Vielleicht kannst du mir aber da noch einen Tipp geben. Ich arbeite eine Schleife ab, und jeder Durchgang ist ein Updatebefehl. Funst Prima. Da aber auch leere Werte zulässig sind, habe ich es wie im Bild gelöst, wobei es nur funktioniert, so wie bei "Spannung" - siehe Bild. In der IF(;;) Anweisung lässt es "Option Strict On" logischerweise nicht zu, da DBNull.Value natürlich kein String ist. Muss ich es also genau wie bei "Spannung" machen? oder gibt es dafür eine bessere Schreibweise?
    Bilder
    • DBNull.Value.png

      14,69 kB, 916×154, 248 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Hinti“ ()

    Habe jetzt eine andere Abfrage. Da möchte ich unter anderem die "Table" als Parameter angeben. Das geht aber scheinbar nicht.

    Mit einem Parameter, so klappt es:
    oleComd.CommandText = "SELECT COUNT(*) FROM [" & sTabelle & "] WHERE Bestueckung = ?;"

    Mit zwei Parameter, das klappt nicht (Fehler lautet dann - siehe Bild):
    oleComd.CommandText = "SELECT COUNT(*) FROM ? WHERE Bestueckung = ?;"

    Geht Parameter auf Table so echt nicht? (naja, bei mir jedenfalls nicht)
    Bilder
    • fehler.png

      20,29 kB, 496×169, 223 mal angesehen
    da hat doch neulich vb1963 die Erklärung gefunden:
    Sql unterscheidet intern zwischen Sprachelementen, die Daten verändern und solchen, die die DB-Struktur ansprechen.
    Und auf Struktur-Elemente kann nicht mit Parametern zugegriffen werden.

    Ist ja auch logisch: jeder Datenwert hat einen DB-Datentyp(int, char, varchar, etc).
    Welchen Db-Datentyp aber soll zBl die Tabelle [User] haben?[/user]