Avatar billede bruhnsweb Nybegynder
16. februar 2005 - 15:09 Der er 13 kommentarer og
1 løsning

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

Hej Eksperter

Jeg skal opdatere min Mysql database, men den melder fejl.

<%
'Opdaterer status i ordretabellen
Set rs_add_status = Server.CreateObject("ADODB.RecordSet")
rs_add_status.open "Select * from ordrer where id = " & Request.QueryString("order_id") & "", Conn,1,3
    rs_add_status.update
        rs_add_status("status")    = "2"
    rs_add_status.update
%>

Nogen der har et bud på hvorfor??

Jeg er helt væk :o(

// Bruhn
Avatar billede eagleeye Praktikant
16. februar 2005 - 15:13 #1
Hvilken fejl tekst får du?  Fejlkoden '80004005' dækker over flere forskellige fejl.

men du behøver ikke den første rs_add_status.update det skulle være nok at havde den til sidst.
Avatar billede bruhnsweb Nybegynder
16. februar 2005 - 15:16 #2
[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-standard-log]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'by='Århus C' AND email='xxxxx@xxxxxx.com' AND telefon='123456

/files/file_12.asp, line 109


Linje 12 = rs_add_status.update (den sidste)

Jeg har prøvet uden den første update, det virkede heller ikke :o(
Avatar billede eagleeye Praktikant
16. februar 2005 - 15:20 #3
Der står linje 109.
Avatar billede bruhnsweb Nybegynder
16. februar 2005 - 15:23 #4
ha ha - ja men 109 = rs_add_status.update (den sidste)
Avatar billede eagleeye Praktikant
16. februar 2005 - 15:26 #5
Det lyder lidt underligt for den fejl kode er med en helt anden where del end den du har vist:
by='Århus C' AND email='xxxxx@xxxxxx.com' AND telefon='123456

I den SQL du bruger er der kun: id = " & Request.QueryString("order_id") & ""

Er du sikker på det er den rigtige fil?
Avatar billede bruhnsweb Nybegynder
16. februar 2005 - 15:30 #6
Det er også det som jeg synes er mærkeligt...

Den henviser til:
'Tilføjer ordren til databasen
Set rs_add_order = Server.CreateObject("ADODB.RecordSet")
rs_add_order.cursorlocation = 3
rs_add_order.open "Select * from ordrer", Conn,1,3
    rs_add_order.addnew
        rs_add_order("dato")                     = date()
        rs_add_order("tid")                     = time()
        rs_add_order("status")                     = "1"
        rs_add_order("navn")                    = Request.Form("navn")
        rs_add_order("adresse")                    = Request.Form("adresse")
        rs_add_order("postnr")                    = Request.Form("postnr")
        rs_add_order("by")                        = Request.Form("by")
        rs_add_order("telefon")                    = Request.Form("telefon")
        rs_add_order("email")                    = Request.Form("email")
        rs_add_order("besked")                    = Request.Form("besked")       
    rs_add_order.update

tror jeg...

men fejl i linie 109, som er 50 linier længere nede..

Men før jeg indsatte:
<%
'Opdaterer status i ordretabellen
Set rs_add_status = Server.CreateObject("ADODB.RecordSet")
rs_add_status.open "Select * from ordrer where id = " & Request.QueryString("order_id") & "", Conn,1,3
    rs_add_status.update
        rs_add_status("status")    = "2"
    rs_add_status.update
%>
Virkede det fint!
Avatar billede bruhnsweb Nybegynder
16. februar 2005 - 15:37 #7
Prøver lige at indsætte hele koden, kan være at det giver mere mening:
----------------------------------------------------------------------------------------
<%
Session.LCID = 1030

Totalt_kurv = 0

Set RS_kurv_status = Server.CreateObject("ADODB.RecordSet")
RS_kurv_status.open "Select * from kurv WHERE session_id = " & "" & request.QueryString("no")& "", Conn,1,3
    DO WHILE NOT RS_kurv_status.eof
        SET RS_vare_pris = Server.CreateObject("ADODB.RecordSet")
        RS_vare_pris.open "SELECT * FROM produkter WHERE id = " & RS_kurv_status("vare_nr") & "", Conn,1,3
            'Reng pris ud - gange hvor mange eksemplarer der er bestilt
            'Gemmer i variabel
            Totalt_kurv = Totalt_kurv + RS_vare_pris("pris") * RS_kurv_status("vare_antal")
         
    RS_kurv_status.movenext
    LOOP



If request.QueryString("Action") = "new_order" Then
'Tilføjer ordren til databasen
Set rs_add_order = Server.CreateObject("ADODB.RecordSet")
rs_add_order.cursorlocation = 3
rs_add_order.open "Select * from ordrer", Conn,1,3
    rs_add_order.addnew
        rs_add_order("dato")                     = date()
        rs_add_order("tid")                     = time()
        rs_add_order("status")                     = "1"
        rs_add_order("navn")                    = Request.Form("navn")
        rs_add_order("adresse")                    = Request.Form("adresse")
        rs_add_order("postnr")                    = Request.Form("postnr")
        rs_add_order("by")                        = Request.Form("by")
        rs_add_order("telefon")                    = Request.Form("telefon")
        rs_add_order("email")                    = Request.Form("email")
        rs_add_order("besked")                    = Request.Form("besked")       
    rs_add_order.update

'Vidersender produkterne til ordrelinjer
Response.redirect "?site_id=12&Action=add_lines&order_id=" & rs_add_order.Fields("id") & "&no=" & request.QueryString("no") & "&pay_type=" & request.form("pay_type")

ElseIf request.QueryString("Action") = "add_lines" Then
'Tilføjer de bestilte produkter til ordrelinjer
Set rs_pris             = Server.CreateObject("ADODB.RecordSet")
Set rs_add_orderline     = Server.CreateObject("ADODB.RecordSet")
Set rs_kurv             = Server.CreateObject("ADODB.RecordSet")

rs_add_orderline.open "Select * from ordre_linjer", Conn,1,3
rs_kurv.open "SELECT * FROM kurv WHERE session_id = " & request.QueryString("no"), Conn,1,3
Do while not rs_kurv.eof
'Finder prisen til hver varer
rs_pris.open "SELECT * FROM produkter WHERE id = " & rs_kurv("vare_nr"), Conn,1,3
    rs_add_orderline.addnew
        rs_add_orderline("ordre_id")                     = request.QueryString("order_id")
        rs_add_orderline("produkt_id")                     = rs_kurv("vare_nr")
        rs_add_orderline("antal")                         = rs_kurv("vare_antal")
        rs_add_orderline("pris")                        = rs_pris("pris")
    rs_add_orderline.update
rs_pris.close   
rs_kurv.movenext
Loop

'Sletter indholdet af indhøbskurven
        Set RS_kurv_kasse = Server.CreateObject("ADODB.RecordSet")
        RS_kurv_kasse.open "Select * from kurv WHERE session_id = " & request.QueryString("no"), Conn,1,3
        do while not RS_kurv_kasse.EOF
        RS_kurv_kasse.delete
        RS_kurv_kasse.update
        RS_kurv_kasse.MoveNext
        Loop

'Vidersender brugeren til betaling
Response.redirect "?site_id=12&Action=pay&order_id=" & request.QueryString("order_id") & "&no=" & request.QueryString("no") & "&pay_type=" & request.QueryString("pay_type") & "&pris=" & Totalt_kurv

ElseIf request.QueryString("Action") = "pay" Then
pris = request.QueryString("pris") + 25
If Request.QueryString("pay_type") <> "1" Then
'Sender brugeren videre til information omkring alternativ betaling
Response.redirect "?site_id=20&pay_type=" & request.QueryString("pay_type") & "&pris=" & pris & "&order_id=" & request.QueryString("order_id")
Else

'Opdaterer status i ordretabellen
Set rs_add_status = Server.CreateObject("ADODB.RecordSet")
rs_add_status.open "Select * from ordrer where id = " & Request.QueryString("order_id") & "", Conn,1,3
        rs_add_status("status")    = "2"
    rs_add_status.update
%>
.... Her efter kommer der en dankortformular
----------------------------------------------------------------------------------------
Avatar billede eagleeye Praktikant
16. februar 2005 - 15:46 #8
Det kan ikke være i den del af koden der er jo ikke noge af de SQL sætninger som har noget med by, email eller telefon at gøre.

Angående dankortformular er det en SQL sætning der liger du bruger adresse oplysninger by, email og telefon. by er reserveret ord i SQL (order by, group by) så prøv at sætte ` omkring by så det bliver til:

`by`='Århus C' AND email=...
Avatar billede bruhnsweb Nybegynder
16. februar 2005 - 15:52 #9
altså siden inden sender jeg en form med de oplysninger, som bliver registreret her:
'Tilføjer ordren til databasen
Set rs_add_order = Server.CreateObject("ADODB.RecordSet")
rs_add_order.cursorlocation = 3
rs_add_order.open "Select * from ordrer", Conn,1,3
    rs_add_order.addnew
        rs_add_order("dato")                    = date()
        rs_add_order("tid")                    = time()
        rs_add_order("status")                    = "1"
        rs_add_order("navn")                    = Request.Form("navn")
        rs_add_order("adresse")                    = Request.Form("adresse")
        rs_add_order("postnr")                    = Request.Form("postnr")
        rs_add_order("by")                        = Request.Form("by")
        rs_add_order("telefon")                    = Request.Form("telefon")
        rs_add_order("email")                    = Request.Form("email")
        rs_add_order("besked")                    = Request.Form("besked")     
    rs_add_order.update

Det har virket fint hele tiden. Så ville jeg hvis de havde valgt at betale med dankort opdatere deres status på ordren fra 1 til 2:
'Opdaterer status i ordretabellen
Set rs_add_status = Server.CreateObject("ADODB.RecordSet")
rs_add_status.open "Select * from ordrer where id = " & Request.QueryString("order_id") & "", Conn,1,3
        rs_add_status("status")    = "2"
    rs_add_status.update


Det har virket perfekt indtil jeg indsatte ovenstånde "opdateringsscript"..
Avatar billede bruhnsweb Nybegynder
16. februar 2005 - 16:03 #10
Det er for mærkeligt - når jeg fjerner den sidste update - melder den ingen fejl - men status feltet bliver så heller ikke rettet - ARghhh går snart tilbage til access :o(
Avatar billede eagleeye Praktikant
16. februar 2005 - 16:08 #11
Kan du så ikke lave det som en rigtig SQL sætning så dette:

Set rs_add_status = Server.CreateObject("ADODB.RecordSet")
rs_add_status.open "Select * from ordrer where id = " & Request.QueryString("order_id") & "", Conn,1,3
        rs_add_status("status")    = "2"
    rs_add_status.update

Bliver til dette:

SQL = "update ordrer set status = '2' where id = " & Request.QueryString("order_id")
Conn.Execute(SQL)
Avatar billede bruhnsweb Nybegynder
16. februar 2005 - 16:12 #12
Jamen du er da dejlig :o)

Nu virker det fint :o)

Kom med et svar..

Dog er det temlig mærkeligt at det andet ikke virker...
Avatar billede eagleeye Praktikant
16. februar 2005 - 16:15 #13
Ok her et svar.

min erfaring med mySQL og recordset er at det med .Addnew og .Update en gang imellem kan drille, men laver man det som SQL sætninger og executer dem igemmen en connection virker det.
Avatar billede bruhnsweb Nybegynder
16. februar 2005 - 16:17 #14
Jeg siger i hvert fald mange tak...
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