Avatar billede renewester Nybegynder
04. marts 2006 - 16:48 Der er 7 kommentarer og
1 løsning

ADO mod MySQL update fejl

Hej

Jeg har lavet lidt simpelt kode der henholdsvis indsætter og opdaterer i en database:

Indsæt record:
-----------------
strSQL = "SELECT * FROM khoved"
objRS.open strSQL, objConn, 1, 3
objRS.AddNew
objRS("khoved_id") = CourseNo
objRS("khoved_status") = "ACTIVE"
objRS.Update
objRS.Close


Update record:
-----------------
strSQL = "SELECT * FROM khoved WHERE khoved_id=" & id
objRS.open strSQL, objConn, 1, 3
objRS("khoved_id") = CourseNo
objRS("khoved_status") = "ACTIVE"
objRS.Update
objRS.Close

Når jeg kører dette mod en MS SQL Server database, så fungerer alt perfekt. Kører jeg det derimod op mod en MySQL database (som er første gang med denne databasetype), så kan jeg kun indsætte. Forsøger jeg at opdatere får jeg at vide, at: "Opdateringen mislykkedes, da den række der skulle opdateres ikke kunne findes"?!?!?!

Er der mon en ekspert der har erfaring med dette?
Avatar billede cyberkox Nybegynder
04. marts 2006 - 17:05 #1
Er du sikker på at id har en værdi ?
Avatar billede renewester Nybegynder
04. marts 2006 - 17:07 #2
Ja det er jeg helt sikker på, for jeg spørger tidligere i koden på om der er en værdi for at finde ud af om jeg skal indsætte eller opdatere.
Avatar billede cyberkox Nybegynder
04. marts 2006 - 17:18 #3
Prøv med:

Update record:
-----------------
strSQL = "SELECT * FROM khoved WHERE khoved_id=" & id
objRS.open strSQL, objConn, 1, 3
objRS.Update
objRS("khoved_id") = CourseNo
objRS("khoved_status") = "ACTIVE"
objRS.Update
objRS.Close
Avatar billede renewester Nybegynder
04. marts 2006 - 17:22 #4
Det gør desværre ingen forskel.
Jeg har været ude i om det kan have noget med cursor og locking at gøre?! Mon der kan være forskel på hvad MS SQL og MySQL accepterer?
Avatar billede eagleeye Praktikant
04. marts 2006 - 19:02 #5
Min erfaring med mySQL og recordset er at det ikke virker specielt godt når man bruger recordsetet på den måde du viser og .update. Det kan være du kan ændre på cursor og lock type og det så virker.

Det som jeg har fået til at virker er at skrive SQL sætningen og bruge en connection til at execute den:

strSQL = "update khoved set khoved_id = " & CourseNo & ", khoved_status 'ACTIVE' WHERE khoved_id=" & id"
objConn.Execute(strSQL)
Avatar billede eagleeye Praktikant
04. marts 2006 - 19:03 #6
hmm et par fejl i den strSQL je fik lavet så her en ny:

strSQL = "update khoved set khoved_id = " & CourseNo & ", khoved_status = 'ACTIVE' WHERE khoved_id=" & id
Avatar billede renewester Nybegynder
08. marts 2006 - 23:02 #7
Ja, det duer tilsyneladende ikke med .update-metoden på MySQL.
Jeg har rettet det til "rigtig" SQL, og så kører det...

Tak for dine tips.
Avatar billede eagleeye Praktikant
10. marts 2006 - 00:35 #8
jamen her er da lige et svar så :-)
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