Un piccolo problemino con BindingSource

lunedì 11 febbraio 2008 - 20.28

liuc Profilo | Junior Member

Ciao,
ho nu piccolo problema con il salvataggio dei dati nel db .
Vi scirvo il codice che uso e poi vi spiego meglio il problema

Questo è il codice della mia procedura di salvataggio dei dati :

Private Sub SalvaSpedizione()
Dim Destinatario As wsContatti.DataSetContatti.CONTATTODETTAGLIRow
Dim wssped As New wsSpedizioni.wsSpedizione
Dim msg As String = ""
If DatiValidi(msg) Then
With SPEDIZIONEBindingSource
Try
For Each Destinatario In dsContatti.CONTATTODETTAGLI.Rows
If Destinatario.IsGruppo = 1 Then
Dim wscontatto As New wsContatti.wsContatto
Dim contatto As wsContatti.DataSetContatti.CONTATTODETTAGLIRow
For Each contatto In wscontatto.GetGroupMemberDetail(Destinatario.IdGruppo).CONTATTODETTAGLI.Rows
ImpostaDatiSpedizione(contatto)
ApplicaModificheDB()
SPEDIZIONEBindingSource.AddNew()
Next
Else
ImpostaDatiSpedizione(Destinatario)
ApplicaModificheDB()
SPEDIZIONEBindingSource.AddNew()
End If
Next
Catch ex As Exception
End Try
Me.DialogResult = Windows.Forms.DialogResult.OK
End With
Else
MsgBox(msg)
End If
End Sub

Private Sub ImpostaDatiSpedizione(ByVal contatto As wsContatti.DataSetContatti.CONTATTODETTAGLIRow)
With CType(CType(SPEDIZIONEBindingSource.Current, DataRowView).Row, wsSpedizioni.DataSetSpedizioni.SPEDIZIONERow)
.Data = DataSpedizione
.IdModalitaInvio = IdModalitaInvio
.DestinazioneCodiceComune = contatto.CodiceComune
.DestinazioneVia = contatto.Via
.IdContatto = contatto.IDContatto
.DocumentoData = DocumentoData
.DocumentoDataRicezione = DocumentoDataRicezione
.DocumentoIdUfficio = DocumentoIdUfficio
.DocumentoNumeroProtocollo = DocumentoNumeroProtocollo
End With
End Sub

Private Sub ApplicaModificheDB()
Dim wsSped As New wsSpedizioni.wsSpedizione
SPEDIZIONEBindingSource.EndEdit()
If dsSpedizioni.HasChanges Then
dsSpedizioni = wsSped.SaveData(dsSpedizioni.GetChanges)
End If
End Sub

In pratica all'interno del form do la possibilià all'utente di specificare un elenco di destinatari per una spedizione (corrispondenza).
Di fatto il DB è impostato in maniera tale da ammettere un unico destinatario per spedizione quindi devo aggiungere una spedizione per ciscuno dei destinatari selezionati:

- Per ogni destinatario in elenco
- Se il destinatario è un gruppo di contatti
- per ogni membro del gruppo
- applica i dati al record corrente (SPEDIZIONEBindingSource.Current)
- salva il record (ApplicaModificheDB)
- aggiungi un nuovo record (SPEDIZIONEBindingSource.AddNew())
- Se il destintario no è un gruppo
- applica i dati al record corrente (SPEDIZIONEBindingSource.Current)
- salva il record (ApplicaModificheDB)
- aggiungi un nuovo record (SPEDIZIONEBindingSource.AddNew())

Di fatto però quando ho più di un destinatario o un gruppo come destinatario, viene salvato solo il primo record , per le successive iterazioni il metodo HasChanges (in ApplicaModificheDB) restituisce false e quindi non vengono richiamate le procedure di aggiornamento del DB.

Dov'è che sbaglio ?
Grazie.
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