Forums Últimos mensajes - Powered by IBM
 

Problmas con xml

22/07/2005 - 22:02 por Roberto Carlos | Informe spam
Que tal foro, tengo 2 problemas, en primero es que tengo una serie de datos
guardados en un dataset, los quiero actualizar en un xml, el codigo que
tengo es el sig:

Prog1.Value = 2

Dim fsXML As New FileStream(XMLFileName, FileMode.Open)

Prog1.Value = 3

Dim wrXML As New XmlTextWriter(fsXML, Encoding.Unicode)

Prog1.Value = 4

SBStatus.Text = "Salvando datos del XML"

Prog1.Value = 5

data.WriteXml(wrXML, XmlWriteMode.WriteSchema)

Prog1.Value = 6

wrXML.Close()

Prog1.Value = 7

fsXML.Close()

SBStatus.Text = "Datos Guardados Correctamente"

El detalle es que cuando de doy guardar, o me sobreescribe el xml, sino que
guarda hasta 3 veces lo mismo, ademas de que tengo que refrescar la carga de
datos del xml, ya que de lo contrario no me guarda bien la estructura del
xml.



Por otro lado, cargo los datos ddel xml a un combo, el codigo es el sig:



Private Sub displayData()

SBStatus.Text = "Displaying data"

Prog1.Value = 10

Prog1.Value = 20

Prog1.Value = 30

CoboFolio.DisplayMember = "Folio"

Prog1.Value = 40

Prog1.Value = 50

Prog1.Value = 80

SBStatus.Text = "Completed displaying data"

TabCtrlVerIns.SelectedIndex = 1

btnsave.Enabled = True

End Sub

Para cargarlo en el combo utilizo algo asi:



Private Sub CoboFolio_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles CoboFolio.SelectedIndexChanged

resetData()

If CoboFolio.SelectedIndex >= 0 Then

Dim strRF As String

Dim row As DataRowView = CType(CoboFolio.Items(CoboFolio.SelectedIndex),
DataRowView)

Me.CoboFolio.DisplayMember = "folio"

Me.Txttipo.Text = RTrim(row("tipo"))

If Txttipo.Text = "V" Then

Txttipo.Text = "Verificacion"

Else

Txttipo.Text = "Inspeccion"

End If

Me.txtfsol.Text = row("fecha")

Me.txtfres.Text = row("Fecha2")

End If

End Sub



El detalle aqui es que al cargar los datos en el combo los carga bien, solo
que los va cargando uno por uno y tarda mucho en cargar, quisiera saver si
hay alguna forma de hacerlos mas rapido.



De antemano muchas gracias.
 

Leer las respuestas

#1 Braulio Diez
25/07/2005 - 16:33 | Informe spam
Hola que hay,

Mmmm... has probado a cambiar:

Dim fsXML As New FileStream(XMLFileName, FileMode.Open)

Por:

Dim fsXML As New FileStream(XMLFileName, FileMode.Create)


Create, te crea el fichero si no existe, o te lo trunca a cero bytes si
existe, así siempre estarías escribiendo como nuevo, no añadiendo al final
del fichero.

Dime a ver si con esto te funciona, caso de que no investigaremos otros
posibles problemas (por ejemplo, si el dataset almacena por defecto elementos
borrados o versiones / acceptChanges, ...).

Un saludo
Braulio


/// --
/// Braulio Díez
/// Desarrollador C#
/// Málaga - España
// --


"Roberto Carlos" escribió:

Que tal foro, tengo 2 problemas, en primero es que tengo una serie de datos
guardados en un dataset, los quiero actualizar en un xml, el codigo que
tengo es el sig:

Prog1.Value = 2

Dim fsXML As New FileStream(XMLFileName, FileMode.Open)

Prog1.Value = 3

Dim wrXML As New XmlTextWriter(fsXML, Encoding.Unicode)

Prog1.Value = 4

SBStatus.Text = "Salvando datos del XML"

Prog1.Value = 5

data.WriteXml(wrXML, XmlWriteMode.WriteSchema)

Prog1.Value = 6

wrXML.Close()

Prog1.Value = 7

fsXML.Close()

SBStatus.Text = "Datos Guardados Correctamente"

El detalle es que cuando de doy guardar, o me sobreescribe el xml, sino que
guarda hasta 3 veces lo mismo, ademas de que tengo que refrescar la carga de
datos del xml, ya que de lo contrario no me guarda bien la estructura del
xml.



Por otro lado, cargo los datos ddel xml a un combo, el codigo es el sig:



Private Sub displayData()

SBStatus.Text = "Displaying data"

Prog1.Value = 10

Prog1.Value = 20

Prog1.Value = 30

CoboFolio.DisplayMember = "Folio"

Prog1.Value = 40

Prog1.Value = 50

Prog1.Value = 80

SBStatus.Text = "Completed displaying data"

TabCtrlVerIns.SelectedIndex = 1

btnsave.Enabled = True

End Sub

Para cargarlo en el combo utilizo algo asi:



Private Sub CoboFolio_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles CoboFolio.SelectedIndexChanged

resetData()

If CoboFolio.SelectedIndex >= 0 Then

Dim strRF As String

Dim row As DataRowView = CType(CoboFolio.Items(CoboFolio.SelectedIndex),
DataRowView)

Me.CoboFolio.DisplayMember = "folio"

Me.Txttipo.Text = RTrim(row("tipo"))

If Txttipo.Text = "V" Then

Txttipo.Text = "Verificacion"

Else

Txttipo.Text = "Inspeccion"

End If

Me.txtfsol.Text = row("fecha")

Me.txtfres.Text = row("Fecha2")

End If

End Sub



El detalle aqui es que al cargar los datos en el combo los carga bien, solo
que los va cargando uno por uno y tarda mucho en cargar, quisiera saver si
hay alguna forma de hacerlos mas rapido.



De antemano muchas gracias.





Preguntas similares