In DB schreiben mittels update

webkekse

Grünschnabel
Hallo zusammen,

ich brauche bitte mal Eure Hilfe: Ich lese aus einem Feedbackformular Variablen aus und möchte diese gerne mittels update in meine Datenbank schreiben. Dies funktioniert beim ersten Mal auch, aber beim zweiten Mal bekomme ich die Fehlermeldung: Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

Evtl. liegt es an 3 Memo Feldern die ich in der DB angelegt habe (zumindest habe ich darüber etwas im Internet gefunden)?

Code:
Public Function InDBSchreiben()

Const adOpenKeyset = 1
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4
Const adUseServer = 2
Const adUseClient = 3
 
dim strConnectionString, conn, rs, strSQL
   ' Connection String fuer Access Datenbank  
   strConnectionString="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/Feedback.mdb")
   
   ' Oeffne Datenbankverbindung
   Set conn = Server.CreateObject("ADODB.Connection")
   conn.open strConnectionString
   
   ' Definiere SQL Statement fuer leeres Recordset
   strSQL = "SELECT * FROM tblFeedback wHERE FeedbackID=' '"

   Set rs = Server.CreateObject("ADODB.Recordset")
   ' Oeffne Recordset:
   ' CursorType = adOpenKeyset
   ' LockType = adLockBatchOptimistic
   ' Cursorlocation = adUseServer (per default)
   rs.CursorLocation = adUseClient
   rs.LockType = adLockBatchOptimistic
   rs.CursorType = adOpenKeyset
   rs.open strSQL, conn, 3, 3
   
   ' Neue Datensaetze hinzufuegen:
   rs.AddNew
   rs("Feedback_Datum") = now()
    If len(Name) > 0 Then
        rs.Fields("Feedback_Name").Value = Name
    End If
    If len(Referer) > 0 Then
        rs.Fields("Feedback_Referer").Value = Referer
    End If
    If len(Bewertung) > 0 Then
        rs.Fields("Feedback_Bewertung").Value = Bewertung
    End If
    If len(Besuche) > 0 Then
        rs.Fields("Feedback_Besuche").Value = Besuche
    End If
    If len(Feedback_Gut) > 0 Then
        rs.Fields("Feedback_Gut").Value = Feedback_Gut
    End If
    If len(Feedback_NichtGut) > 0 Then
        rs.Fields("Feedback_NichtGut").Value = Feedback_NichtGut
    End If
    If len(Feedback_IdeenVorschlaege) > 0 Then
        rs.Fields("Feedback_IdeenVorschlaege").Value = Feedback_IdeenVorschlaege
    End If 
   
   ' Schreiben der Datensaetze in die Datenbank
   rs.UpdateBatch

   rs.Close
   conn.close
   
   Set rs = Nothing
   Set conn = Nothing
   

End Function
%>

Kann mir vielleicht jemand helfen? Vielen Dank
 

Luzie

Erfahrenes Mitglied
Hi

ich würde erstmal folgendes ändern

strSQL = "SELECT * FROM tblFeedback wHERE 1<0"

das kann nie vorkommen. Ist aber nicht der Fehler.

Die if-Abfragen kannst Du Dir eigentlich sparen. Wenn es nicht drauf ankommt, ob ein Feld ausgefüllt ist oder, musst Du in Access die Leere Zeichenfolge auf "ja" setzen und Eingabe NULL.

An diesem Scriptcode z.B. kann ich keinen Fehler erkennen. Ich kenne allerdings weder die Feldformate noch die Zuweisung der Variablen.

Ganz einfaches Vorgehen zum Fehlerfinden,

ADO - Einfügescript Stück für Stück aufbauen und testen. Sind nicht so viele Felder :)