Avatar billede l_otto Nybegynder
07. november 2003 - 12:10 Der er 19 kommentarer og
2 løsninger

hvad betyder denne fejl ?

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

/tri/validateOrder.asp, line 221
Avatar billede ldanielsen Nybegynder
07. november 2003 - 12:13 #1
Det er en fejl "i databasen", forstået på den måde at du fx forsåger at sætte tekst ind i et tal-felt, eller en ulovlig dato, eller noget i den stil.

Hvilken Database??
Avatar billede l_otto Nybegynder
07. november 2003 - 12:17 #2
jamen jeg har lavet min access om til Mysql.. :-)
Avatar billede l_otto Nybegynder
07. november 2003 - 12:19 #3
koden er i asp..  men hvordan finder jeg så hvor fejlen ligger ?
Avatar billede netro Nybegynder
07. november 2003 - 13:39 #4
Avatar billede l_otto Nybegynder
07. november 2003 - 13:45 #5
det kan jeg ikke få til at virke hvor skal jeg sætte den ind henne i koden ?
Avatar billede l_otto Nybegynder
07. november 2003 - 13:48 #6
nu skriver den linie 221 ligger fejlen så før linie 221 eller efter eller på linie 221 ?
Avatar billede netro Nybegynder
07. november 2003 - 13:52 #7
Hvis du opbygger en SQL-streng i linie 220 og kører den med ConnName.Execute(SQL) i linie 221, ligger fejlen i linie 220.
Avatar billede l_otto Nybegynder
07. november 2003 - 14:11 #8
<%

    ' opret ordre
    intOrderID = Request.form("intOrderID")

    set rsOrder = Server.CreateObject("ADODB.Recordset")
    rsOrder.Open "SELECT * FROM orders WHERE orderID = " _
        & intOrderID, Conn, adOpenStatic, adLockOptimistic, _
        adCmdText

    if rsOrder.EOF then
        Response.Write "There is a problem with your order. "
        Response.Write "Please contact customer service."
        response.end
    else

    ' opret bruger hvis ikke han allerede er oprettet (logget ind)
    if session("UserID") = "" then
        set rsNewUser = Server.CreateObject("ADODB.Recordset")
        rsNewUser.Open "Users", Conn, adOpenStatic, adLockOptimistic, adCmdTable

        strUsername = Request.form("strUsername")
        strPassword = Request.form("strPassword")

        rsNewUser.addNew
linie 221    rsNewUser("label")        = strlabel
        rsNewUser("firma")        = strFirma
        rsNewUser("first")        = strFirst
        rsNewUser("last")        = strLast
        rsNewUser("address1")    = strAddress1
        rsNewUser("PostalCode")    = strPostalCode
        rsNewUser("City")        = strCity
        rsNewUser("Phone")        = strPhone
        rsNewUser("Email")        = strEmail
        rsNewUser("Username")    = strUsername
        rsNewUser("Password")    = strPassword
        rsNewUser.Update

        rsNewUser.Close
        set rsNewUser = Nothing
Avatar billede netro Nybegynder
07. november 2003 - 15:04 #9
rsNewUser.Open "Select * From Tabel Where ID = 0", Conn, adOpenStatic, adLockOptimistic, adCmdTable

Prøv det.
Avatar billede eagleeye Praktikant
07. november 2003 - 19:05 #10
Fejlen kommer fordi man sætte en streng ind som er længere end max længden for det felt man sætte den ind i.

Det er en fejl i mySQL ODBC driverne som gør at den ikke hendter max længden for feltet men den bruger den længe som de data der er i feltet som max længde og er feltet tomt så er længden 0 og lige meget hvad du sætter ind vil fejle...

Løsningen er at lave det med en SQL sætning.

SQL = INSERT INTO users (label,firma,first,last,address1,postalCode,city,phone,email,username,password) VALUES ("
SQL = SQL & "'" & strlabel & "', "
SQL = SQL & "'" & strFirma & "', "
SQL = SQL & "'" & strFirst & "', "
SQL = SQL & "'" & strLast & "', "
SQL = SQL & "'" & strAddress1 & "', "
SQL = SQL & "'" & strPostalCode & "', "
SQL = SQL & "'" & strCity & "', "
SQL = SQL & "'" & strPhone & "', "
SQL = SQL & "'" & strEmail & "', "
SQL = SQL & "'" & strUsername & "', "
SQL = SQL & "'" & strPassword & "' "
SQL = SQL & ")"
Conn.Execute(SQL)
Avatar billede l_otto Nybegynder
11. november 2003 - 10:35 #11
hej E du er som sædvanlig skarp...

men hvordan får jeg den sat rigtig ind i min kode?

se 07/11-2003 14:11:24

jeg har prøvet at sætte det ind men det gå ikke så godt.. måske kunne du lige sætte det ind hvor det skal stå :-) takker
Avatar billede netro Nybegynder
11. november 2003 - 11:14 #12
Efter:
if session("UserID") = "" then
Avatar billede l_otto Nybegynder
11. november 2003 - 11:17 #13
sådan :

if session("UserID") = "" then
        SQL = INSERT INTO users (label,firma,first,last,address1,postalCode,city,phone,email,username,password) VALUES ("
SQL = SQL & "'" & strlabel & "', "
SQL = SQL & "'" & strFirma & "', "
SQL = SQL & "'" & strFirst & "', "
SQL = SQL & "'" & strLast & "', "
SQL = SQL & "'" & strAddress1 & "', "
SQL = SQL & "'" & strPostalCode & "', "
SQL = SQL & "'" & strCity & "', "
SQL = SQL & "'" & strPhone & "', "
SQL = SQL & "'" & strEmail & "', "
SQL = SQL & "'" & strUsername & "', "
SQL = SQL & "'" & strPassword & "' "
SQL = SQL & ")"
Conn.Execute(SQL)

det virker ikke
Avatar billede eagleeye Praktikant
11. november 2003 - 22:31 #14
hvilken fejl får du ?
eller sætter den ikke i databasen?
Avatar billede l_otto Nybegynder
12. november 2003 - 10:16 #15
nu fik jeg lige rettet koden til der manglede et " før INSERT.. nu sætter den fint ind men får samme fejl igen længere nede i koden:

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

/tri/validateOrder.asp, line 250



if session("UserID") = "" then
        SQL = "INSERT INTO Users (label,fFirma,first,last,address1,postalCode,city,phone,email,username,password) VALUES ("
SQL = SQL & "'" & strlabel & "', "
SQL = SQL & "'" & strFirma & "', "
SQL = SQL & "'" & strFirst & "', "
SQL = SQL & "'" & strLast & "', "
SQL = SQL & "'" & strAddress1 & "', "
SQL = SQL & "'" & strPostalCode & "', "
SQL = SQL & "'" & strCity & "', "
SQL = SQL & "'" & strPhone & "', "
SQL = SQL & "'" & strEmail & "', "
SQL = SQL & "'" & strUsername & "', "
SQL = SQL & "'" & strPassword & "' "
SQL = SQL & ")"
Conn.Execute(SQL)



   
        ' sæt variabel som bruges ifbm. udsendelse af mails længere nede til at tjekke om brugeren er ny
        newuser="Ja"

        ' find user id (ny bruger som lige er oprettet ovenfor)
        set rsUserID = Server.CreateObject("ADODB.Recordset")
        rsUserID.Open "SELECT UserID FROM Users WHERE Username = '"&strUsername&"' ", Conn, adOpenStatic, adLockOptimistic, adCmdText

    else

        ' find user id (eksisterende bruger)
        set rsUserID = Server.CreateObject("ADODB.Recordset")
        rsUserID.Open "SELECT UserID FROM Users WHERE UserID = "&session("UserID"), Conn, adOpenStatic, adLockOptimistic, adCmdText
   
    end if

   
        rsOrder("sAmt") = Request.form("intShipping")
        rsOrder("tax") = Request.form("intTax")
  Linie 250 =    rsOrder("fLabel") = Request.form("strlabel")
        rsOrder("fFirma") = Request.form("strFirma")
        rsOrder("fName") = Request.form("strFirst")
        rsOrder("lName") = Request.form("strLast")
        rsOrder("email") = Request.form("strEmail")
        rsOrder("address1") = Request.form("strAddress1")
   
        rsOrder("city") = Request.form("strCity")
     
        rsOrder("postalcode") = Request.form("strPostalCode")
        rsOrder("phone") = Request.form("strPhone")
        rsOrder("sfName") = Request.form("strShipFirst")
        rsOrder("slName") = Request.form("strShipLast")
        rsOrder("sAddress") = Request.form("strShipAddress")
        rsOrder("sCity") = Request.form("strShipCity")
   
        rsOrder("sPostalcode") = Request.form("strShipPostalCode")
        rsOrder("sCountry") = Request.form("strShipCountry")
        rsOrder("sMethod") = Request.form("strShipMethod")
        rsOrder("total") = Request.form("intTotal")
        intTotal = Request.form("intTotal")
        rsOrder("orderDate") = Date
        rsOrder("UserID") = rsUserID("UserID")
        rsOrder("status") = "COMPLETE"
        rsOrder.Update
Avatar billede eagleeye Praktikant
12. november 2003 - 23:02 #16
Det er det samme som gælder for dem, fejlen skyldes det samme, men indætter du ikke tingene to gange så når det sidste rs.AddNew er efter din if-sætning?
Avatar billede l_otto Nybegynder
13. november 2003 - 08:55 #17
jo kunde oplysningerne bliver lagt i users (til at logge ind med) og i orders så man kan se hvad de har bestilt...

hvordan se koden så ud hvis jeg skal have det til at virke ?
Avatar billede eagleeye Praktikant
13. november 2003 - 18:55 #18
ja kan ikke se du åber rsOrder noget sted..

Hvis det er dobbelt kode så fjern alle de linjer med:

rsOrder("xx") = Request.form("yy")
Avatar billede l_otto Nybegynder
14. november 2003 - 08:46 #19
jeg åbner den øverst... men det er ikke dobblte på den måde jeg skal bruge infoen to gange :-)

<%

    ' opret ordre
    intOrderID = Request.form("intOrderID")

    set rsOrder = Server.CreateObject("ADODB.Recordset")
    rsOrder.Open "SELECT * FROM orders WHERE orderID = " _
        & intOrderID, Conn, adOpenStatic, adLockOptimistic, _
        adCmdText

    if rsOrder.EOF then
        Response.Write "There is a problem with your order. "
        Response.Write "Please contact customer service."
        response.end
    else

    ' opret bruger hvis ikke han allerede er oprettet (logget ind)
    if session("UserID") = "" then
        SQL = "INSERT INTO Users (label,fFirma,first,last,address1,postalCode,city,phone,email,username,password) VALUES ("
SQL = SQL & "'" & strlabel & "', "
SQL = SQL & "'" & strFirma & "', "
SQL = SQL & "'" & strFirst & "', "
SQL = SQL & "'" & strLast & "', "
SQL = SQL & "'" & strAddress1 & "', "
SQL = SQL & "'" & strPostalCode & "', "
SQL = SQL & "'" & strCity & "', "
SQL = SQL & "'" & strPhone & "', "
SQL = SQL & "'" & strEmail & "', "
SQL = SQL & "'" & strUsername & "', "
SQL = SQL & "'" & strPassword & "' "
SQL = SQL & ")"
Conn.Execute(SQL)



   
        ' sæt variabel som bruges ifbm. udsendelse af mails længere nede til at tjekke om brugeren er ny
        newuser="Ja"

        ' find user id (ny bruger som lige er oprettet ovenfor)
        set rsUserID = Server.CreateObject("ADODB.Recordset")
        rsUserID.Open "SELECT UserID FROM Users WHERE Username = '"&strUsername&"' ", Conn, adOpenStatic, adLockOptimistic, adCmdText

    else

        ' find user id (eksisterende bruger)
        set rsUserID = Server.CreateObject("ADODB.Recordset")
        rsUserID.Open "SELECT UserID FROM Users WHERE UserID = "&session("UserID"), Conn, adOpenStatic, adLockOptimistic, adCmdText
   
    end if

   
        rsOrder("sAmt") = Request.form("intShipping")
        rsOrder("tax") = Request.form("intTax")
        rsOrder("fLabel") = Request.form("strlabel")
        rsOrder("fFirma") = Request.form("strFirma")
        rsOrder("fName") = Request.form("strFirst")
        rsOrder("lName") = Request.form("strLast")
        rsOrder("email") = Request.form("strEmail")
        rsOrder("address1") = Request.form("strAddress1")
   
        rsOrder("city") = Request.form("strCity")
     
        rsOrder("postalcode") = Request.form("strPostalCode")
        rsOrder("phone") = Request.form("strPhone")
        rsOrder("sfName") = Request.form("strShipFirst")
        rsOrder("slName") = Request.form("strShipLast")
        rsOrder("sAddress") = Request.form("strShipAddress")
        rsOrder("sCity") = Request.form("strShipCity")
   
        rsOrder("sPostalcode") = Request.form("strShipPostalCode")
        rsOrder("sCountry") = Request.form("strShipCountry")
        rsOrder("sMethod") = Request.form("strShipMethod")
        rsOrder("total") = Request.form("intTotal")
        intTotal = Request.form("intTotal")
        rsOrder("orderDate") = Date
        rsOrder("UserID") = rsUserID("UserID")
        rsOrder("status") = "COMPLETE"
        rsOrder.Update
       
        Conn.Execute("DELETE FROM itemsOrdered WHERE " _
            & "orderID = " & intOrderID)

        set rsItem = Server.CreateObject("ADODB.Recordset")
        rsItem.Open "itemsOrdered", Conn, adOpenStatic, adLockOptimistic, adCmdTable

        for each item in Request.form("strOrderItem")

            strOrderItem = cstr(item)
            itemInfo = split(strOrderItem, ",")

            rsItem.addNew
            rsItem("orderID") = intOrderID
            rsItem("productID") = itemInfo(0)
            rsItem("quantity") = itemInfo(1)
            rsItem.Update

        next

        rsItem.Close
        set rsItem = Nothing
       
    end if

    rsOrder.Close
    set rsOrder = Nothing

session("username") = strUsername
session("password") = strPassword
session("betaling") = request("betaling")
Avatar billede eagleeye Praktikant
14. november 2003 - 16:32 #20
Problemmet er det samme så det skal være en "rigtig" SQL sætning

SQL = "INSERT INTO tabelnavn "
SQL = SQL "(sAmt, tax, fLabel, fFirma, fName, lName, email, address1, city, postalcode, "
SQL = SQL "phone, sfName, slName, sAddress, sCity, sPostalcode, sCountry, "
SQL = SQL "sMethod, total, orderDate, UserID, status) "
SQL = SQL " VALUES ("
SQL = SQL "'" & Request.form("intShipping") & "', "
SQL = SQL "'" & Request.form("intTax") & "', "
SQL = SQL "'" & Request.form("strlabel") & "', "
SQL = SQL "'" &  Request.form("strFirma") & "', "
SQL = SQL "'" &  Request.form("strFirst") & "', "
SQL = SQL "'" &  Request.form("strLast") & "', "
SQL = SQL "'" &  Request.form("strEmail") & "', "
SQL = SQL "'" &  Request.form("strAddress1") & "', "
SQL = SQL "'" &  Request.form("strCity") & "', "
SQL = SQL "'" &  Request.form("strPostalCode") & "', "
SQL = SQL "'" &  Request.form("strPhone") & "', "
SQL = SQL "'" &  Request.form("strShipFirst") & "', "
SQL = SQL "'" &  Request.form("strShipLast") & "', "
SQL = SQL "'" &  Request.form("strShipAddress") & "', "
SQL = SQL "'" &  Request.form("strShipCity") & "', "
SQL = SQL "'" &  Request.form("strShipPostalCode") & "', "
SQL = SQL "'" &  Request.form("strShipCountry") & "', "
SQL = SQL "'" &  Request.form("strShipMethod") & "', "
SQL = SQL "'" &  Request.form("intTotal") & "', "
SQL = SQL "'" &  Date & "', "
SQL = SQL "'" & rsUserID("UserID") & "', "
SQL = SQL "'" & "COMPLETE" &  & "' "
SQL = SQL ")"
Avatar billede l_otto Nybegynder
25. november 2003 - 14:19 #21
takker..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester