Dimenticavo 'na cosa … ;-)
alla fine di solito è bene assicurarsi di acciaccare gli oggetti e chiudere la connessione
' connection close
Rs.Close
Set Rs = Nothing
db2.Close
Set db2 = Nothing
Sarebbe buonissima norma.
Ad ogni modo una piccola revisione del codice potrebbe essere questa:
' initialize connection objects and variables
Dim Rs As DAO.Recordset
db2 As DAO.Database
sConnect As String
' set connection string
sConnect = "PROVIDER = MSDASQL;driver={SQL Server};Server=999.999.999.99;Database=keystore2;UID=sa;PWD=ABCDEFGH;OPTION=3;"
' open database
Set db2 = OpenDatabase("", False, False, sConnect)
' open recordset
Set Rs = db2.OpenRecordset("SELECT * FROM CLIENTI", dbOpenDynaset)
' find first
Rs.FindFirst "CODICE ='100'"
' check if exist
If Not Rs.NoMatch Then
' record update
Rs.Edit
Rs("RAG_SOC") = "PIPPO"
Rs.Update
Else
MsgBox "Record con CODICE = '100' non trovato."
End If
' connection close
Rs.Close
Set Rs = Nothing
db2.Close
Set db2 = Nothing
mo se capisce un po' meglio l'intento di questo codice e fa delle cose un po' più correttamente di prima ;-))
Edit:
a proposito di Find First …. personalmente toglierei proprio il metodo Find e inserirei molto semplicemente nella stringa sql Select il Top e la Where condition… ure il metodo edit non ha molto senso a meno tu abbia necessità di bloccare il record fino a quando non esegui l'update, quindi anche questo può essere eliminato:
' initialize connection objects and variables
Dim Rs As DAO.Recordset
db2 As DAO.Database
sConnect As String
' set connection string
sConnect = "PROVIDER = MSDASQL;driver={SQL Server};Server=999.999.999.99;Database=keystore2;UID=sa;PWD=ABCDEFGH;OPTION=3;"
' open database
Set db2 = OpenDatabase("", False, False, sConnect)
' open recordset
Set Rs = db2.OpenRecordset("SELECT TOP 1 * FROM CLIENTI WHERE CODICE = '100'", dbOpenDynaset)
' check if exist and recordset update
If Not Rs.Eof Then
Rs.Fields("RAG_SOC").Value = "PIPPO"
Rs.Update
Else
MsgBox "Record con CODICE = '100' non trovato."
End If
' connection close
Rs.Close
Set Rs = Nothing
db2.Close
Set db2 = Nothing
Più semplice e lineare in questo modo. Fa meno cose e le fa più velocemente. ;-)
ariEdit: ;-)
Oppure può fare tutto una sql Update… per esempio:
' set connection string
Dim sConnect As String
sConnect = "PROVIDER = MSDASQL;driver={SQL Server};Server=999.999.999.99;Database=keystore2;UID=sa;PWD=ABCDEFGH;OPTION=3;"
' open connection database
Dim db2 As DAO.Database
Set db2 = OpenDatabase("", False, False, sConnect)
' set sql string and excute
db2.Execute "UPDATE CLIENTI SET RAG_SOC = 'PIPPO' WHERE CODICE = '100' AND ID = (SELECT TOP 1 ID FROM CLIENTI WHERE CODICE = '100')"
' connection close
db2.Close
Set db2 = Nothing
Oppure … oppure bastaaaaa !!! altrimenti non rimane più nulla del codice , abbiamo tolto tutto quello che si poteva togliere ;-)