Vraag & Antwoord

Webprogrammeren & scripting

[ASP] Vaag ODBC Access database probleem!

Anoniem
None
3 antwoorden
  • Ik heb een database verbinding gemaakt met een access database, alleen soms als er spaties in een invoer worden gebruikt, en die worden opgeslagen in de database, geeft hij deze fout:

    Soort fout:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
    Bij een OLE DB-bewerking die uit meerdere stappen bestaat, zijn fouten opgetreden. Controleer alle OLE DB-statuswaarden als deze beschikbaar zijn. Er is niets gewijzigd.
    /log-in/test.asp, line 40


    Ik hoop dat iemand weet wat dit betekend… dit is de code:

    [code:1:fc5ee8302b]

    <%
    strAccessDB = "users"
    strCon = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=letmein; DBQ=" & Server.MapPath(strAccessDB)

    Set cnn = Server.CreateObject("ADODB.Connection")
    cnn.Open strCon

    Set rsCheckUser= Server.CreateObject("ADODB.Command")
    Set rsCheckUser.ActiveConnection = cnn

    Set rsCheckUser = Server.CreateObject("ADODB.Recordset")

    strSQL = "SELECT tblUsers.* FROM tblUsers WHERE tblUsers.UserID ='" & strUserName & "'"

    rsCheckuser.CursorType = 2
    rsCheckUser.LockType = 3
    rsCheckUser.Open strSQL, strCon
    rsCheckUser.AddNew

    dim strid as string
    dim strpwd
    dim strweb
    dim strhtml
    dim strhint

    strID = Request.form ("id")
    strPWD = Request.Form ("pwd")
    strWEB = Request.Form ("web")
    strHTML = Request.Form ("html")
    strhint = Request.Form ("pwdhint")

    rsCheckUser.Fields("UserID") = strID
    rsCheckUser.Fields("Password2") = strPWD
    rsCheckUser.Fields("webadres") = strWEB
    rsCheckUser.Fields("HTML") = strHTML
    rsCheckUser.Fields("pwdhint") = strhint

    rsCheckUser.Update

    rsCheckUser.Requery

    Set adoCon = Nothing
    Set strCon = Nothing
    Set rsCheckUser = Nothing

    %>

    [/code:1:fc5ee8302b]
  • Ik kan de foutmelding niet 1-2-3 plaatsen.

    Maar een paar andere zaken die me opvallen:
    [list:ad06f2b645]
    [*:ad06f2b645]je maakt objecten aan die je vervolgens niet gebruikt (ADODB.Command)
    [*:ad06f2b645]je sluit objecten niet juist af (Close), of je zet objecten op Nothing die helemaal niet bestaan (adoCon).
    [*:ad06f2b645]je voert een Requery uit terwijl je meteen daarna de recordset sluit
    [/list:u:ad06f2b645]
    Nu zal dat waarschijnlijk niets met de fout te maken hebben, maar ik vind de code een rommeltje (no offence).

    Probeer eens een andere connectiemethode (JET OLEDB provider bijv.)
  • Je krijgt de foutmelding omdat je de velden niet leeg mag laten.

    Check vooraf of de velden geen waarden bevatten met een if..then constructie en als het veld leeg is voer je bijvoorbeeld "NB" in.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.