PDA

View Full Version : [VB .NET e access] problema con update di un record


NeXuS26
10-04-2011, 19:02
salve ragazzi, spero possiate darmi un mano. sto impostando la seguente stringa di update:

Public Shared updateString As String = "UPDATE Company SET compFullName = @NAME, compPhoneNumber = @PHONE1, compPhoneNumber1 = @PHONE2, compFaxNumber = @FAX, compEmail1 = @MAIL1, compEmail2 = @MAIL2, compWebAddress = @WEB, idContact = @IDCONTACT, compEmailContacted = @MAILYESNO, compTelContacted = @PHONEYESNO, compNotes = @NOTES, compCreationDate = @CREATED, compLastModified = @MODIFIED WHERE idCompany = @ID"

Costruisco tutti i parametri richiesti, con i tipi corretti e li inserisco in una list(of oledbparameter) che passo ad un metodo shared che li aggiunge alla collection di un oledbcommand.parameters... tutto và come deve andare (è giusto x rendere l'idea) col debugger ho controllato tutto, i parametri e i valori sono giusti. eseguo su tale oledbcommand una ExecuteNonQuery che (porco zio) mi ritorna SEMPRE 0!!!!

la funzione che esegue la query è questa:

Public Shared Function ExecuteNonQuery(ByVal query As String, Optional ByVal params As List(Of OleDb.OleDbParameter) = Nothing) As Integer
Dim q As OleDb.OleDbCommand
Dim ret As Integer = 0

Try
q = New OleDb.OleDbCommand(query, mConnection) 'mConnection è un campo privato della classe in cui si trova il metodo

If params IsNot Nothing Then
If params.Count <> 0 Then
For Each p As OleDb.OleDbParameter In params
q.Parameters.Add(p)
Next

End If
End If

mConnection.Open()

ret = q.ExecuteNonQuery

mConnection.Close()

dovrebbe andare, dato che non va, o sto sbagliando qualcosa di macroscopico che non riesco a vedere, oppure c'entra il motore db di access..... in effetti se eseguo la stessa query all'interno di access mi dice che non può essere eseguita per violazione di chiave (ovviamente la chiave che inserisco nella clausola WHERE è corretta)