Newsgroup: it.comp.lang.visual-basic
Titolo: VB.Net - Problema salvataggio dati con WriteXml

Sono alle prese con un problema. Ho un dataset a cui aggiungo una o piu'
righe. Quando utilizzo il metodo writexml sul file xml mi ritrovo le nuove
righe doppie. Dove' che sbaglio?
Public Shared mioDsAziende As New aziende()
Public Overrides Sub btnSalva_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnSalva.Click
        Try
            Dim workRow As DataRow = mdiPrincipale.myDs.aziende.NewRow
            workRow("ragionesociale") = txtRagioneSociale.Text
            workRow("indirizzo") = txtIndirizzo.Text
            mdiPrincipale.myDs.aziende.Rows.Add(workRow)
            mioDsAziende.AcceptChanges()
            Dim mioFile As String = "aziende.xml"
            mdiPrincipale.frmAziende.WriteXmlToFile(mdiPrincipale.myDs,
mioFile)
            Dim UltimoInserito As Integer =
mdiPrincipale.myDs.aziende.Rows.Count
            mdiPrincipale.frmAziende.cMan.Position = UltimoInserito
            Me.Hide()
        Catch errore As Exception
            MsgBox(errore.Message)
        End Try
End Sub
Public Sub WriteXmlToFile(ByVal mioDs As DataSet, ByVal nomeFile As String)
        Try
            If mioDs Is Nothing Then
                Return
            End If
            mioDs.WriteXml(nomeFile, XmlWriteMode.IgnoreSchema)
        Catch errore As Exception
            MsgBox(errore.Message)
        End Try
End Sub
Saluti
Riccardo

             mdiPrincipale.myDs.aziende.Rows.Add(workRow)
Qui aggiungi al dataset la riga che hai creato e aggiunto in precedenza.
-------------------------------------
Ergo ne hai messe due uguali nel dataset, quindi quando persisti ne trovi,
correttamente, due.
ciao,
Dads
Sorry per il pessimo quote, ma, se serve a discolparmi, ho un pò sonno...

Non ho verificato del tutto se quello che hai detto e' effettivamente
corretto (ho il dubbio xche' e' ispirato da un esempio dell'help) ma cmq mi
hai dato lo stimolo a smanazzare nel codice e alla fine ho trovato una
soluzione cosi' semplice che quasi ho il sospetto che sia troppo facile per
essere vera:
(do per scontato che esista un binding tra dataset e controlli sul form e
che esista un oggetto CurrencyManager (cMan nel mio esempio) con il corretto
BindingContext.)
2 righe di codice
Private Sub btnAggiungi_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnAggiungi.Click
        cMan.AddNew()
End Sub
Public Overridable Sub btnSalva_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnSalva.Click
            mioDs.WriteXml(nomeFile, XmlWriteMode.IgnoreSchema)
End Sub
Saluti
Riccardo

Non ho verificato del tutto se quello che hai detto e' effettivamente
corretto (ho il dubbio xche' e' ispirato da un esempio dell'help) ma cmq mi
hai dato lo stimolo a smanazzare nel codice e alla fine ho trovato una
soluzione cosi' semplice che quasi ho il sospetto che sia troppo facile per
essere vera:
(do per scontato che esista un binding tra dataset e controlli sul form e
che esista un oggetto CurrencyManager (cMan nel mio esempio) con il corretto
BindingContext.)
2 righe di codice
Private Sub btnAggiungi_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnAggiungi.Click
        cMan.AddNew()
End Sub
Public Overridable Sub btnSalva_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnSalva.Click


 essere vera:
(cut)
Pero' se guardi quello che hai scritto, hai implementato la mia soluzione
ovvero fai l'addnew e poi non aggiungi (nuovamente) la riga al dataset.
Cmq, se questa per te e' una soluzione piu' semplice... buon per te.
Ciao,
D.

Ho provato ad eliminare sia la prima che la seconda delle righe oggetto del
tuo precedente post ma questo non produce righe sdoppiate e neanche righe
singole. Il motivo e' che quelle due righe ci vogliono entrambe  credo che
il problema stia nell'utilizzo di quella tecnica insieme all'utilizzo del
currency manager (a naso).
La strada che ho seguito successivamente invece si appoggia su di un metodo
del currency manager (addnew) e non del dataset (newrow e addrow).
Saluti
Riccardo

attenzione, nell'esempio che ho riportato prima di utilizzar il metodo
WriteXml inserire il codice
cMan.EndCurrentEdit()
altrimenti non salva correttamente l'ultimo dei record inseriti.
Saluti
Riccardo

 wrote in message
news:b01i49$kie$1...@newsreader.mailgate.org...

Sorry, la gatta frettolosa... ecc. ecc.
ciao,
D.