|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2001
Messaggi: 90
|
[MYSQL+VB6] errore stranissimo
Sto facendo da poco esperimenti con vb6 e mysql usando il driver 3.51 che fornische mysql e direi che funziona tutto benissimo a parte un dettaglio che secondo me e' assurdo:
Se aggiorno un record con lo stesso valore, mi si crea un errore di "Impossibile trovare la riga da aggiornare" Per capirci meglio, 3 campi, nome cognome indirizzo, copio da db a 3 textbox, e poi quando uno da salva copia dai 3 textbox nel db. Se i 3 valori sono stati cambiati tutto ok, ma se almeno 1 e rimasto uguale crasha tutto. rs![nome] = text1.text ( valore "gino" ) rs.update ( se prima il valore del campo nome era "pino" va bene ma se era gia' "gino" crasha) possibile che per ogni record devo mettere un controllo per verificare se era lo stesso valore ? helppppppppppppppppppppppppppppp e grazie anticipatamente a tutti |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Oct 2001
Messaggi: 90
|
nessun idea ?
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
La chiave della tabella qual'è?
Se è formata dall'insieme (Nome,Cognome,Indirizzo) è dovuto probabilmente al fatto che non si può inserire nel database una riga duplicata sul valore della chiave.
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
![]() |
![]() |
![]() |
#4 | |
Member
Iscritto dal: Oct 2001
Messaggi: 90
|
Quote:
Qualsiasi campo se rimetto lo stesso valore e do il .update crasha. |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Che dirti... potresti creare una variabile booleana all'interno della classe ed intercettare l'evento change delle textbox, in modo tale da mettere su true queste variabili... però mi sembra davvero strano, non so, puoi postare il codice d'apertura e cosa fai per l'update?
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
![]() |
![]() |
![]() |
#6 | |
Member
Iscritto dal: Oct 2001
Messaggi: 90
|
Quote:
1) se non tocchi nulla e dai salva funziona 2) se cambi uno dei 3 valori o 2 o tutti 3 funziona 3) se cambi uno dei 3 ( provato con tutti e 3 singolarmente ) e poi cancelli e rimetti il vecchio ( il tutto senza mai lanciare il salva ) e poi lanci il salva crasha E' come se non accettasse che il recordset risulta modificato ( .editmode = 1 ) ma i valori nei record non sono cambiati dall'originale. Public Sub salva() Dim rsl1 As ADODB.Recordset Dim sql As String Set rsl1 = New ADODB.Recordset rsl1.CursorLocation = adUseClient rsl1.CursorType = adOpendynamic rsl1.LockType = adLockoptimistic sql = "select * from prova where cognome='" & vecchiocognome.Text & "'" rsl1.Open sql, conn If rsl1.EOF = False Then rsl1![nome] = nome.text rsl1![cognome] = cognome.text rsl1![indirizzo] = indirizzo.text rsl1.update End If rsl1.Close End Sub Ultima modifica di adryzz : 11-12-2007 alle 16:43. |
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Oct 2001
Messaggi: 90
|
Ecco un altro sistema per ricreare il problema la key primaria del db e' "cognome" :
Public Sub test() dim tmp as string Dim rsl1 As ADODB.Recordset Dim sql As String Set rsl1 = New ADODB.Recordset rsl1.CursorLocation = adUseClient rsl1.CursorType = adOpendynamic rsl1.LockType = adLockoptimistic sql = "select * from prova where cognome='bianchi'" rsl1.Open sql, conn If rsl1.EOF = False Then tmp=rsl1![nome] rsl1![nome] = tmp rsl1.update End If rsl1.Close End Sub con questa routine senza controlli text ne altro si riesce a ricreare il problema |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Potresti fare così:
sql = "UPDATE prova SET nome='" & var_nome & "', cognome='" & var_cognome & "', indirizzo='" & var_indirizzo & "' WHERE cognome='" & vecchiocognome.Text & "'" rsl1.Open sql, conn Ovvero passare al driver direttamente una query di update, cosa che è anche più veloce rispetto a prendere i valori, modificarli e lanciare l'update. Comunque se non mi ricordo male il problema è dovuto alla dichiarazione del cursor: fai qualche ricerca in merito ![]()
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:49.