Ankha: ASP/SQL Problem

Hallo~

Ich versuche, meine Datenbank mit Insert/Delete-Befehlen zu modifizieren.

Und bekomme dabei imemr den Fehler

Microsoft JET Database Engine Fehler "80040e10'

Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.

Ich bin mir nicht bewusst, irgendetwas nicht angegeben zu haben~

Eine Funktion, die diesen Fehler wirft, sieht beispielsweise so aus:

sub Kompetenzenadd(w)
Set cn = Server.CreateObject("ADODB.Connection")
strPfadDB = Server.MapPath("db\Server_Konf.mdb")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPfadDB
cn.Open strConn
dim q
q=1
do while rs.EOF=false
q=q+1
rs.moveNext
loop
tempstring = "INSERT Into [tbl_Kompetenzen]([ID], [Kompetenz]) VALUES("&q&", "&w&")"
cn.execute tempstring
cn.close
set cn = Nothing
end sub

Mein Chef hat gemeint, ich sollte versuchen die Variablen in Eckige Klammern zu packen. Das hab ich nicht ganz verstanden, aber ich habs mal versucht. Ohne sichtbaren Erfolg. ._.

Was soll ich machen?

Danke im Voraus~
Ankha

  1. Hello,

    verschiedene Anmerkungen:

    tempstring = "INSERT Into [tbl_Kompetenzen]([ID], [Kompetenz]) VALUES("&q&", "&w&")"

    wo kommt das w her? Kann es sein, dass dein Statement im Endeffekt (-> Response.Write(tempstring)) "... VALUE(123, )" lautet?

    Mein Chef hat gemeint, ich sollte versuchen die Variablen in Eckige Klammern zu packen. Das hab ich nicht ganz verstanden, aber ich habs mal versucht. Ohne sichtbaren Erfolg. ._.

    Mit eckigen Klammer sorgt man im Microsoft SQL-Dialekt dafür, dass reservierte und ansonsten ungültige Feldnamen verwendet werden können, insbesondere Feldnamen mit Leerzeichen o.ä. - eine Spalte "Name Vorname" könnte man normalerweise nicht anlegen/ansprechen, über [Name Vorname] geht es.

    Schließlich, die Meldung werfen Jet-DBs gerne, wenn ein Spaltenname nicht gefunden wurde - nehmen wir an, du hast eine Tabelle Kunden mit Spalten Name und Vorname. Wenn du jetzt schreibst
    SELECT vrname FROM kunden
    würde das System behaupten, eine Variable sei nicht belegt, weil es davon ausgeht, dass vrname eine Variable ist, die versehentlich nicht belegt wurde.

    MfG
    Rouven

    --
    -------------------
    Wenn du die Nadel im Heuhaufen nicht findest, zünde den Heuhaufen an.
    1. Danke vielmals, jezt funktioniert es ^_^

      Hat daran gelegen dass w ein string ist und ich die ' vergessen hab.

      Und das rs is ein Überbleibsel von nem früheren Versuch. Is jetzt auch weg. ^^

      Danke nochmal~
      Ankha

  2. sub Kompetenzenadd(w)
    Set cn = Server.CreateObject("ADODB.Connection")
    strPfadDB = Server.MapPath("db\Server_Konf.mdb")
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPfadDB
    cn.Open strConn
    dim q
    q=1
    do while rs.EOF=false

    =false ist überflüssig, und wo wird bitte schön das rs gefüllt?

    q=q+1
    rs.moveNext
    loop

    tempstring = "INSERT Into [tbl_Kompetenzen]([ID], [Kompetenz]) VALUES("&q&", "&w&")"

    Führe den Befehl mal manuell aus, mit dummywerten, klappts?
    -Was für Datentypen sind das? -> evtl fehlen ''
    -Falls ID Numerisch, definiere ID als AutoWert

    Folgendes funktioniert bei mir bei manueller Ausführung:
    INSERT Into tbl_Kompetenzen(Kompetenz) VALUES("w")

    -> In VB:
    cn.execute "INSERT Into tbl_Kompetenzen(Kompetenz) VALUES('" & variable & "')"

    cn.execute tempstring
    cn.close
    set cn = Nothing
    end sub

    Mein Chef hat gemeint, ich sollte versuchen die Variablen in Eckige Klammern zu packen. Das hab ich nicht ganz verstanden, aber ich habs mal versucht. Ohne sichtbaren Erfolg. ._.

    Das wäre sinnvoll wenn die Spaltennamen von Access reservierte Schlüsselwörter sind (evtl ID)

    Was soll ich machen?

    siehe oben

    Danke im Voraus~
    Ankha

    1. Hello,

      do while rs.EOF=false
      =false ist überflüssig, und wo wird bitte schön das rs gefüllt?

      ähm - nö. du hast gerade, vmtl. unabsichtlich, die Bedingung umgedreht. Die äquivalente Schreibweise wäre
      Do While Not rs.EOF

      MfG
      Rouven

      --
      -------------------
      Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums