Oppure

Loading
15/09/08 18:11
dynux
Buona sera, premetto di essere alle prime armi col visual basic e sto impazzendo nel capire il funzionamento del comando cn.execute "Update...ecc".

Vorrei aggiornare un record selezionato tramite ID, potreste gentilmente mostrarmi un codice di esempio per farmi capire? grazie mille.
aaa
15/09/08 18:53
ruggy94
Se vuoi aggiornare un record attraverso l'ID dovrai usare UPDATE...SET...WHERE in questo modo:
UPDATE nometabella SET nomecampo=nuovovalore WHERE id=valore

ad esempio:
UPDATE tabellaclienti SET nome='Antonio' WHERE id=1

se qualcosa non ti è chiaro fammelo sapere :k:
aaa
16/09/08 15:32
dynux
Grazie mille, ho provato col codice che mi hai suggerito ma il vb6 dice che ho commesso un errore di sintassi, ma dove?
Private Sub Command1_Click()
Dim ident As String
Dim Aggiorna As String
ident = ricerca_utente.RicNid.Caption
Aggiorna = "UPDATE figuranti SET " _
& "Nome = '" & Replace(frmModifica.txtNome.Text, "'", "''") & "' " _
& "Cognome = '" & Replace(frmModifica.txtCognome.Text, "'", "''") & "' " _
& "Via = '" & Replace(frmModifica.txtVia.Text, "'", "''") & "' " _
& "Telefono = '" & Replace(frmModifica.txtTel.Text, "'", "''") & "' " _
& "Ruolo = '" & Replace(frmModifica.cmbRuolo.Text, "'", "''") & "' " _
& "Abito = '" & Replace(frmModifica.txtAbito.Text, "'", "''") & "' " _
& "WHERE ID= " & ident
cn.Execute (Aggiorna)
MsgBox "Modifica effettuata con successo", vbInformation
End Sub

Finchè il campo da aggiornare era solo in Nome funzionava benissimo, ma da quando ho aggiunto tutto il record non va più, nno riesco proprio a vedere questo errore di sintassi.
Ultima modifica effettuata da dynux 16/09/08 15:36
aaa
16/09/08 17:46
ruggy94
Prova a cliccare su Debug quando ti da il messaggio d'errore...vedi che stringa viene evidenziata.
Fammi sapere :k:
aaa
16/09/08 20:37
dynux
Ecco l'errore dettagliato:
"Errore di sintassi (operatore mancante) nell'espressione query "prova' Cognome = 'prova' Via = 'prova' Telefono = '000' Ruolo = 'ruolo1' Abito = '184'.
Sembra che manchi il nome, ma nel codice (sottoriportato) lo aggiorna, o sono io che sbaglio?
Private Sub Command1_Click()
Dim ident As String
Dim Aggiorna As String
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
    
    stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    stringa = stringa & "C:\NUNDINAE\figuranti.mdb"
    
    cn.Open stringa
ident = ricerca_utente.RicNid.Caption
Aggiorna = "UPDATE figuranti SET " _
& "Nome = '" & Replace(frmModifica.txtNome.Text, "'", "''") & "' " _
& "Cognome = '" & Replace(frmModifica.txtCognome.Text, "'", "''") & "' " _
& "Via = '" & Replace(frmModifica.txtVia.Text, "'", "''") & "' " _
& "Telefono = '" & Replace(frmModifica.txtTel.Text, "'", "''") & "' " _
& "Ruolo = '" & Replace(frmModifica.cmbRuolo.Text, "'", "''") & "' " _
& "Abito = '" & Replace(frmModifica.txtAbito.Text, "'", "''") & "' " _
& "WHERE ID= " & ident
cn.Execute (Aggiorna)
MsgBox "Modifica effettuata con successo", vbInformation
End Sub


Se invece provo a far aggiornare solo il nome, il codice funziona, potete darmi una mano?
Ultima modifica effettuata da dynux 16/09/08 20:51
aaa
16/09/08 21:04
ruggy94
A prima vista non vedo l'errore...il cattivo dei database è che richiedono queste righe odiose ^^
ora riscrivo tutto il codice da capo...tu usa il mio codice al posto del tuo e dimmi se è uguale o comunque cosa succede:
Aggiorna = "UPDATE figuranti SET " _
            & "nome = '" & Replace(frmModifica.txtNome.Text, "'", "''") & "', " _
            & "cognome = '" & Replace(frmModifica.txtCognome.Text, "'", "''") & "', " _
            & "via = '" & Replace(frmModifica.txtVia.Text, "'", "''") & "', " _
            & "telefono = '" & Replace(frmModifica.txtTelefono.Text, "'", "''") & "', " _
            & "ruolo = '" & Replace(frmModifica.cmbRuolo.Text, "'", "''") & "', " _
            & "abito = '" & Replace(frmModifica.txtabito.Text, "'", "''") & "', " _
            & "WHERE id = " & CInt(ident)
            MsgBox "Modifica effettuata con successo",vbInformation

Ah ecco quale può essere il problema...confrontando i due codici ho notato che tu non hai messo il CInt che (se non lo sai) converte in integer. Prova il mio codice e fammi sapere. :k:
PS: Ho scritto il codice usando le & come hai fatto tu, così ti viene più facile fare il confronto.
Ultima modifica effettuata da ruggy94 16/09/08 21:53
aaa
16/09/08 21:46
dynux
ehm, così com'è il tuo codice dava un errore negli ultimi 3 campi, ma mancava solo una virgola, l'ho sinstemato ma adesso il vb mi risponde con il seguente messaggio:
"Errore di run-time "-2147217900(80040e14) Errore di sintassi nell'istruzione UPDATE"

anche se nel codice niente è evidenziato in rosso, che ne pensi?
aaa
16/09/08 21:55
ruggy94
intanto grazie per le virgole, ho editato il codice precedente :D ogni tanto si fanno errori di battitura.
Comunque, dopo aver sistemato le virgole, cosa c'è di diverso tra il mio ed il tuo codice? (Apparte il CInt intendo)
aaa