Fehler im Code? SQL Anweisung hängt am "rs.Update"
Tomcat
- datenbank
Hallo Forumer,
bitte schaut Euch einmal den u. a. Code an. Dieses DB Aktualisierung habe ich mir zusammengebaut. Mit weniger rs.Fields Anweisungen geht auch alles gut. Allerdings hängt er sich bei diesem Code beim letzten "rs.Update" (Teil 2) auf. Und zwar mit der Fehlermeldung:
Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e2f'
[Microsoft][ODBC Microsoft Access Driver]Fehler in Zeile
/infonet_working/Aendern/MA_change_update.asp, Zeile 109
Zeile 109 wäre dann "rs.Update"
Allerdings kann ich den Fehler nicht finden (mit meinen bescheidenen Kenntnissen ;-))
Wer kann mir helfen?
Gruß
Tomcat
Erster Teil
___________________________________________________________
<body>
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "LundbeckMitarbeiter","",""
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "Select * FROM Lundbeck Where ID = " & Request.Form("ID")
rs.open sql, conn, 3, 3
rs.Fields("Vorname") = Request.Form("Vorname")
rs.Fields("Nachname") = Request.Form("Nachname")
rs.Fields("Titel") = Request.Form("Titel")
rs.Fields("GebCode") = Request.Form("GebCode")
rs.Fields("Abteilung") = Request.Form("Abteilung")
rs.Fields("Abteilungkurz") = Request.Form("Abteilungkurz")
rs.Fields("Status3") = Request.Form("Status3")
rs.Fields("Vorwahl") = Request.Form("Vorwahl")
rs.Fields("Telefon") = Request.Form("Telefon")
rs.Fields("Durchwahl") = Request.Form("Durchwahl")
rs.Fields("Strasse") = Request.Form("Strasse")
rs.Fields("Plz") = Request.Form("Plz")
rs.Fields("Ort") = Request.Form("Ort")
rs.Fields("eMail") = Request.Form("eMail")
rs.Fields("Kommunikation") = Request.Form("Kommunikation")
rs.Fields("Status") = Request.Form("Status")
rs.Fields("Status2") = Request.Form("Status2")
rs.Fields("photo") = Request.Form("eMail")
rs.Fields("Mobil") = Request.Form("Mobil")
pers = Request.Form("PersNr")
rs.update
conn.close
%>
___________________________________________________________________
Zweiter Teil (selbe Page)
___________________________________________________________________
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "LundbeckMitarbeiter","",""
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "Select * FROM Hardware Where PersNr ='" & pers & "'"
rs.open sql, conn, 3, 3
if rs.BOF AND rs.EOF Then
rs.AddNew
rs.Fields("Vorname") = Request.Form("Vorname")
rs.Fields("Nachname") = Request.Form("Nachname")
rs.Fields("PersNR") = Request.Form("PersNr")
rs.Fields("PC") = Request.Form("PC")
rs.Fields("PC_SN") = Request.Form("PC_SN")
rs.Fields("PCAnlagenNr") = Request.Form("PCAnlagenNr")
rs.Fields("CareNr") = Request.Form("CareNr")
rs.Fields("Bildschirm") = Request.Form("Bildschirm")
rs.Fields("Bildschirm_SN") = Request.Form("Bildschirm_SN")
rs.Fields("BildschirmAnlagenNr") = Request.Form("BildschirmAnlagenNr")
rs.Fields("Drucker") = Request.Form("Drucker")
rs.Fields("Drucker_SN") = Request.Form("Drucker_SN")
rs.Fields("DruckerAnlagenNr") = Request.Form("DruckerAnlagenNr")
rs.Fields("Modem") = Request.Form("Modem")
rs.Fields("Modem_SN") = Request.Form("Modem_SN")
rs.Fields("Maus") = Request.Form("Maus")
rs.Fields("Handy") = Request.Form("Handy")
rs.Fields("HandyModell") = Request.Form("HandyModell")
rs.Fields("Handy_SN") = Request.Form("Handy_SN")
rs.Fields("ISDNAnschluss") = Request.Form("ISDNAnschluss")
rs.Fields("ISDNAnlageJaNein") = Request.Form("ISDNAnlageJaNein")
rs.Fields("ISDNAnlagenTyp") = Request.Form("ISDNAnlagenTyp")
rs.Fields("ISDNAnlagen_SN") = Request.Form("ISDNAnlagen_SN")
rs.Fields("TelefonJaNein") = Request.Form("TelefonJaNein")
rs.Fields("TelefonTyp") = Request.Form("TelefonTyp")
rs.Fields("Dialinaccess") = Request.Form("Dialinaccess")
rs.Fields("ElvisKennung") = Request.Form("ElvisKennung")
rs.Fields("ElvisPasswort") = Request.Form("ElvisPasswort")
rs.Fields("NTKennung") = Request.Form("eMail")
rs.Fields("NTPasswort") = Request.Form("NTPasswort")
rs.Fields("Photo") = Request.Form("Photo")
Else
rs.Fields("Vorname") = Request.Form("Vorname")
rs.Fields("Nachname") = Request.Form("Nachname")
rs.Fields("PC") = Request.Form("PC")
rs.Fields("PC_SN") = Request.Form("PC_SN")
rs.Fields("PCAnlagenNr") = Request.Form("PCAnlagenNr")
rs.Fields("CareNr") = Request.Form("CareNr")
rs.Fields("Bildschirm") = Request.Form("Bildschirm")
rs.Fields("Bildschirm_SN") = Request.Form("Bildschirm_SN")
rs.Fields("BildschirmAnlagenNr") = Request.Form("BildschirmAnlagenNr")
rs.Fields("Drucker") = Request.Form("Drucker")
rs.Fields("Drucker_SN") = Request.Form("Drucker_SN")
rs.Fields("DruckerAnlagenNr") = Request.Form("DruckerAnlagenNr")
rs.Fields("Modem") = Request.Form("Modem")
rs.Fields("Modem_SN") = Request.Form("Modem_SN")
rs.Fields("Maus") = Request.Form("Maus")
rs.Fields("Handy") = Request.Form("Handy")
rs.Fields("HandyModell") = Request.Form("HandyModell")
rs.Fields("Handy_SN") = Request.Form("Handy_SN")
rs.Fields("ISDNAnschluss") = Request.Form("ISDNAnschluss")
rs.Fields("ISDNAnlageJaNein") = Request.Form("ISDNAnlageJaNein")
rs.Fields("ISDNAnlagenTyp") = Request.Form("ISDNAnlagenTyp")
rs.Fields("ISDNAnlagen_SN") = Request.Form("ISDNAnlagen_SN")
rs.Fields("TelefonJaNein") = Request.Form("TelefonJaNein")
rs.Fields("TelefonTyp") = Request.Form("TelefonTyp")
rs.Fields("Dialinaccess") = Request.Form("Dialinaccess")
rs.Fields("ElvisKennung") = Request.Form("ElvisKennung")
rs.Fields("ElvisPasswort") = Request.Form("ElvisPasswort")
rs.Fields("NTKennung") = Request.Form("eMail")
rs.Fields("NTPasswort") = Request.Form("NTPasswort")
rs.Fields("Photo") = Request.Form("Photo")
End if
rs.Update
conn.close
%>
<table border="1" width="100%">
<tr>
<td width="100%">Die Daten wurden geändert.</td>
</tr>
</table>
</body>
Sorry - sorry - sorry - - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry - sorry.
Hallo Tomcat,
Der Fehler besagt meistens, das ein Feld NULL oder Leer ("") ist,
in der Datenbank aber das Feld nicht leer sein darf.
Ein Feld des Typs Zahl darf nicht mit "" belegt werden, sondern
der Wert muß, wenn er leer ist, als NULL eingetragen werden.
<%
If IsEmpty(Variable) Or Variable = "" Or Not IsNumeric(Variable) Then
Variable = NULL
End if
rs.Fields("...") = Variable
%>
Eventuell gibt es auch ein Problem bei der Typumwandlung:
String -> Feldtyp Zahl
String -> Feldtyp Datum
...
Tschau, Stefan
Hallo Tomcat,
habe Deinen Code durchgeguckt ...
Allerdings hängt er sich bei diesem Code beim letzten "rs.Update" >>(Teil 2) auf. Und zwar mit der Fehlermeldung:
Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e2f'
[Microsoft][ODBC Microsoft Access Driver]Fehler in Zeile
/infonet_working/Aendern/MA_change_update.asp, Zeile 109
Zeile 109 wäre dann "rs.Update"
Allerdings kann ich den Fehler nicht finden (mit meinen bescheidenen Kenntnissen ;-))
Zweiter Teil (selbe Page)
___________________________________________________________________
<%
»» Set conn = Server.CreateObject("ADODB.Connection")
»» conn.open "LundbeckMitarbeiter","",""
»» Set rs = Server.CreateObject("ADODB.Recordset")
»» SQL = "Select * FROM Hardware Where PersNr ='" & pers & "'"
»» rs.open sql, conn, 3, 3
die Verzweigung if else end if wird sicher nicht schuld sein
rs.AddNew
rs.Fields("Vorname") = Request.Form("Vorname")
rs.Fields("Nachname") = Request.Form("Nachname")
sitze zwar gerade zuhause wo ichs nicht nachpruefen kann, aber ich
glaube mich zu erinnern, dass ich auch schon mal den gleichen Fehler gebaut habe ...
------»» rs.Update ------------- koennte der Schuldige sein ...
glaube, das brauchst Du nach der Recordsetobjekt-Methode '.AddNew nicht' mehr (da muessen doch keine Daten ueberschrieben werden, es ist doch eh klar, dass ein neuer Datensatz geschrieben wird), lass das mal versuchsweise weg...
»» conn.close
%>
<table border="1" width="100%">
<tr>
<td width="100%">Die Daten wurden geändert.</td>
</tr>
</table>
</body>
andere Frage: gibt es einen zwingenden Grund, Connection- und Recordset-Objektinstanz doppelt zu erzeugen? Nach meiner Erfahrung
ist es auch nicht gut, unter IIS Datensatz- und Verbindungsobjekte nicht zu zerstoeren (auch wenn MS immer behauptet, VB tue dies langsam, aber sicher). In solchen Umgebungen wie ASP und IIS habe ich meine Anwendung erst stabil gekriegt , seit ich konsequent
rs.close
set rs = nothing
conn.close
set conn = nothing
verwende.
So, hoffentlich hatte ich recht, wird spaet
tschuess
Uwe