Tomcat: Fehler im Code? SQL Anweisung hängt am "rs.Update"

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>

  1. 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.

  2. 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

  3. 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