Aggiornamento tabelle correlate

domenica 22 ottobre 2006 - 00.32

relux Profilo | Newbie

Salve a tutti,
Ho il seguente problema:

Ho 2 tabella correlate tramite una relazione e un vincolo di chiave esterna. Per aggiornare queste tabelle uso il seguente procedimento che ho trovato nella documentazione di visual studio 2005:

Dim deletedItem_prenotazione As dbDataSet.Item_prenotazioneDataTable = CType( _
DbDataSet.Item_prenotazione.GetChanges(Data.DataRowState.Deleted), dbDataSet.Item_prenotazioneDataTable)

Dim newItem_prenotazione As dbDataSet.Item_prenotazioneDataTable = CType( _
DbDataSet.Item_prenotazione.GetChanges(Data.DataRowState.Added), dbDataSet.Item_prenotazioneDataTable)

Dim modifiedItem_prenotazione As dbDataSet.Item_prenotazioneDataTable = CType( _
DbDataSet.Item_prenotazione.GetChanges(Data.DataRowState.Modified), dbDataSet.Item_prenotazioneDataTable)
Me.Validate()

' Remove all deleted Item_prenotazione from the Item_prenotazione table.
If Not deletedItem_prenotazione Is Nothing Then
Item_prenotazioneTableAdapter.Update(deletedItem_prenotazione)
End If

' Update the Prenotazione table.
PrenotazioneTableAdapter.Update(DbDataSet.Prenotazione)

' Add new Item_prenotazione to the Item_prenotazione table.
If Not newItem_prenotazione Is Nothing Then
Item_prenotazioneTableAdapter.Update(newItem_prenotazione)
End If

' Update all modified Item_prenotazione.
If Not modifiedItem_prenotazione Is Nothing Then
Item_prenotazioneTableAdapter.Update(modifiedItem_prenotazione)
End If

DbDataSet.AcceptChanges()
Catch ex As Exception
MessageBox.Show(ex.Message, "INSERIMENTO DATI FALLITO", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)

Finally
If Not deletedItem_prenotazione Is Nothing Then
deletedItem_prenotazione.Dispose()
End If

If Not newItem_prenotazione Is Nothing Then
newItem_prenotazione.Dispose()
End If

If Not modifiedItem_prenotazione Is Nothing Then
modifiedItem_prenotazione.Dispose()
End If
End Try

Ho scritto questo codice nell'evento click del BindingNavigatorSave e ho inserito anche un altro bindingnavigator per muovermi tra i record della tabella item (che è la tabella figlio). Il problema è che in alcuni casi nn funziona!!
Ad esempio un'eccezione che viene lanciata spesso,mandando in blocco tutto è:
"violazione di concorrenza: DeleteCommand/UpdateCommand ha modificato 0 di 1 record previsti" Che significa? Sto accedendo solo io al db!!Quale concorrenza?
Inoltre spesso nn viene fatto il "commit" dei dati ovvero nn vengono trasferiti nel db ma sono comunque visibili nelle dataTable (in memoria). Qualcuno potrebbe spiegarmi in dettaglio come funziona tutto questo, ovvero perchè nn funziona?


Scusatemi se mi sono dilungato troppo e grazie anticipatamente a tutti per l'interessamento.
Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5