Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Violazione di concorrenza: UpdateCommand ha modificato 0 dei 1 record previsti.
Forum - C# / VB.NET - Violazione di concorrenza: UpdateCommand ha modificato 0 dei 1 record previsti.

Avatar
clode87 (Normal User)
Newbie


Messaggi: 10
Iscritto: 07/06/2010

Segnala al moderatore
Postato alle 9:23
Giovedì, 10/06/2010
ciao a tutti. sto realizzando un applicazione che utilizza la connessione ad un database.

nella form principale apro la connessione e carico i dati di tutte le tabelle del database, tuttavia quando devo modificare una riga della colonna licenza mi affido ad un form secondario.

qui ho importato il mio dataset ed il mio tableadapter.

riesco ad estrarre i dati ma quando faccio per salvarli mi da il seguente errore sull'update:

Violazione di concorrenza: UpdateCommand ha modificato 0 dei 1 record previsti.

il problema è che io sono l'unico utente che accede al database quindi è impossibile che i dati siano stati modificati da un'altro, in piu da quando carico il dataset a quando lo aggiorno passano 10 righe di codice!

Codice sorgente - presumibilmente VB.NET

  1. Me.LicenzaNTableAdapter.Fill(Me.DbAssistenzaDataSet.LicenzaN)
  2.  
  3. Dim dRow As DbAssistenzaDataSet.LicenzaNRow
  4. dRow = Form1.DbAssistenzaDataSet.LicenzaN.Rows.Find(Form1.IDLicenzaSelezionato)
  5.  
  6. dRow.DataAtt = DateTimePickerDataAttLicenza.Value
  7.  
  8. If (CheckBoxScadLicenza.CheckState = CheckState.Checked) Then
  9.  
  10. Dim data As Date
  11.  
  12. data = "01/01/9999"
  13.  
  14.  
  15. dRow.DataScad = data
  16.  
  17. Else
  18. dRow.DataScad = DateTimePickerDataScadLicenza.Value
  19.  
  20.  
  21. End If
  22.  
  23. dRow.Attiva = True
  24. dRow.Canone = dRow.Canone
  25. dRow.ID_Aziendale = dRow.ID_Aziendale
  26.  
  27. dRow.ID_Sw = dRow.ID_Sw
  28. dRow.ID_LicDett = 0
  29.  
  30.  
  31. Me.LicenzaNTableAdapter.Update(Form1.DbAssistenzaDataSet.LicenzaN)
  32. Me.DbAssistenzaDataSet.AcceptChanges()



l'unico dubbio che ho è il fatto che per far visualizzare grid particolari con dati provenienti da tabelle differenti creo un datatable facendo un join tra le tabelle interessate....
però questi dati li utilizzo solo per leggere e creare nuove righe di quella tabella senza toccare però la tabella interessata..... qualche idea???

Ultima modifica effettuata da Il Totem il 12/06/2010 alle 18:36
PM Quote
Avatar
clode87 (Normal User)
Newbie


Messaggi: 10
Iscritto: 07/06/2010

Segnala al moderatore
Postato alle 12:01
Giovedì, 10/06/2010
scusate ho postato un codice sbagliato.... ci sono dentro 2 riferimenti al form principale che usavo per testare una cosa... il codice giusto è questo:

Codice sorgente - presumibilmente VB.NET

  1. Dim dRow As DbAssistenzaDataSet.LicenzaNRow
  2. dRow = Me.DbAssistenzaDataSet.LicenzaN.Rows.Find(Form1.IDLicenzaSelezionato)
  3. dRow.DataAtt = DateTimePickerDataAttLicenza.Value
  4.  
  5. If (CheckBoxScadLicenza.CheckState = CheckState.Checked) Then
  6.    Dim data As Date
  7.    data = "01/01/9999"
  8.    dRow.DataScad = data
  9. Else
  10.    dRow.DataScad = DateTimePickerDataScadLicenza.Value
  11. End If
  12.  
  13. dRow.Attiva = True
  14. Me.LicenzaNTableAdapter.Update(Me.DbAssistenzaDataSet.LicenzaN)



a nessuno è mai uscito un errore simile????

Ultima modifica effettuata da Il Totem il 12/06/2010 alle 18:37
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:39
Sabato, 12/06/2010
A me è capitato. Ogni riga ha dei metodi chiamati, se non ricordo male, SetAdded e SetModified, per indicare se è stata aggiunta o modificata. Se non hai esplicitamente chiamato questi metodi, potrebbe verficarsi l'eccezione che hai riscontrato. La soluzione potrebbe consistere nell'invocare SetAdded per le righe aggiunte e SetModified per le righe modificate.

PM Quote