Consulta sobre XML

01/06/2005 - 15:19 por Fabian | Informe spam
Hola a todos.

Alguien sabe cual es la forma mas sencilla de pasar un dataset a xml y
viceversa, pero sin perder el esquema del archivo.

yo estoy utilizando, esto.

Public Function Paises() As String
'Trae un solo Pais
Dim ds As New Data.DataSet
Dim strSql1 As String
Dim conn As New
SqlClient.SqlConnection(ConfigurationSettings.AppSettings("Nombre"))
strSql1 = "select * from TablaPaises '"
Dim da3 As New SqlClient.SqlDataAdapter(strSql1, conn)
da3.Fill(ds, "Paises")
conn.Close()
Dim aa As String
aa = ds.GetXml
Paises_pais = (aa)
End Function


Private Function lleno_paises()
Dim Datos As New CBase1
Dim MiString As String
Dim ds As New DataSet
MiString = Datos.Paises()
Dim sr = New System.IO.StringReader(MiString)
ds.ReadXml(sr)
End Function

Pero si algun campo esta null lo pierdo

Gtacias Fabian

Preguntas similare

Leer las respuestas

#6 Fabian
02/06/2005 - 17:39 | Informe spam
Listo ya funciono, muchas gracias por tu ayuda

Fabian

PD:::realmente no podia , no podia, y no podia!!!!!!! Gracias Gracias
Gracias.

"Braulio Diez" escribió en el mensaje
news:
Hola,

Aquí tienes la solución

DataSet ds = CreateTestDataset();

System.IO.StringWriter stWrite = new System.IO.StringWriter();
ds.WriteXml(stWrite, XmlWriteMode.WriteSchema);
string Resultado = stWrite.ToString();
stWrite.Close();

Un saludo
Braulio

"Fabian" wrote:

> Braulio, yo otra vez, te cuento
>
> En base a lo que me contastee, encontre esto y esoy probando. pero no
> encuentro como dejar el xml en una variable.
>
> te podes fijar aver si vos te das cuenta que puedo modificar para


mantener
> el xml
>
> Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles Button2.Click
> Dim myConnectionString As String = "User
> ID=sa;password=xxxxxxxxxx;Initial Catalog=prueba1;Data Source=fgp-2003"
>
> Dim mySelectQuery As String = "Select * From scdtocte order by
> c_cliente"
> Dim myXMLfile As String = "c:\mySchema.xml"
>
> Dim con As New SqlConnection(myConnectionString)
> Dim daCust As New SqlDataAdapter(mySelectQuery, con)
> Dim ds As New DataSet
> daCust.Fill(ds, "Cust")
> Try
> ds.WriteXml(myXMLfile, XmlWriteMode.WriteSchema)
> Catch ex As Exception
> MessageBox.Show(ex.ToString())
> End Try
> End Sub
>
> Gracias Fabian
>
>
> "Braulio Diez" escribió en el mensaje
> news:
> > Hola,
> >
> > WriteXMl tiene varias implementaciones, una te deja grabar a un


"stream"
> o
> > a un "textwriter", un stream es un flujo de datos, de ahí puedes pasar


el
> > stream directamente entre capas, o el textwriter, o si no pasarlo a


string
> > sin problemas (todo en memoria).
> >
> > Lo bueno de los Streams es que tu decides si quieres que es flujo


de
> > datos sea en memoria o en disco.
> >
> > Un saludo
> > Braulio
> >
> > "Braulio Diez" wrote:
> >
> > > Hola,
> > >
> > > Mira en el DataSet el metodo "WriteXml" hay una implementacion de


este
> con
> > > un parametro más en el que le dices si quieres que te de el XML con


el
> > > esquema incluido o no (el XmlWriteMode).
> > >
> > > Un saludo
> > > Braulio
> > >
> > > "Fabian" escribió:
> > >
> > > > Hola a todos.
> > > >
> > > > Alguien sabe cual es la forma mas sencilla de pasar un dataset a


xml y
> > > > viceversa, pero sin perder el esquema del archivo.
> > > >
> > > > yo estoy utilizando, esto.
> > > >
> > > > Public Function Paises() As String
> > > > 'Trae un solo Pais
> > > > Dim ds As New Data.DataSet
> > > > Dim strSql1 As String
> > > > Dim conn As New
> > > >


SqlClient.SqlConnection(ConfigurationSettings.AppSettings("Nombre"))
> > > > strSql1 = "select * from TablaPaises '"
> > > > Dim da3 As New SqlClient.SqlDataAdapter(strSql1, conn)
> > > > da3.Fill(ds, "Paises")
> > > > conn.Close()
> > > > Dim aa As String
> > > > aa = ds.GetXml
> > > > Paises_pais = (aa)
> > > > End Function
> > > >
> > > >
> > > > Private Function lleno_paises()
> > > > Dim Datos As New CBase1
> > > > Dim MiString As String
> > > > Dim ds As New DataSet
> > > > MiString = Datos.Paises()
> > > > Dim sr = New System.IO.StringReader(MiString)
> > > > ds.ReadXml(sr)
> > > > End Function
> > > >
> > > > Pero si algun campo esta null lo pierdo
> > > >
> > > > Gtacias Fabian
> > > >
> > > >
> > > >
>
>
>
Respuesta Responder a este mensaje
#7 Fabian
02/06/2005 - 23:20 | Informe spam
Braulio, te moles otra vez


Te cuento lo que me pasa

1->Traigo los datos de un cliente determinado lo pido en la funcion existe
que llama a clietesxml que le pasa
un xml con los datos y yo los paso a un dataset

Private Function existe(ByVal fcclave) As Boolean
Try
Dim datos As New CAccesos
Dim MiString = datos.Clientesxml(fcclave)
Dim sr = New System.IO.StringReader(MiString)
If Not MiString = "<NewDataSet />" Then
xtransA.ReadXml(sr)
existe = True
Else
existe = False
End If
Catch err As Exception
Dim xx As String
xx = err.ToString
End Try
DataGrid1.DataSource = xtransA
End Function


Public Function Clientesxml(ByVal fccliente As String) As String
Dim ds As New Data.DataSet()
Dim strSql1 As String
Dim conn As New
SqlClient.SqlConnection(ConfigurationSettings.AppSettings("ConectoaPrueba1")
)
If fccliente = "TODOS" Then
strSql1 = "Select
c_cliente,d_amp_cte,d_direc,c_servicio,c_pais,c_servicio,c_cat,c_ciudad from
ScDtoCte order by d_amp_cte"
Else
strSql1 = "Select * from ScDtoCte where c_cliente=" & fccliente
End If
Dim da3 As New SqlClient.SqlDataAdapter(strSql1, conn)
da3.Fill(ds, "Clientes")
conn.Close()
Dim aa As String
'aa = ds.GetXml

Dim stwrite As New System.IO.StringWriter
ds.WriteXml(stwrite, XmlWriteMode.WriteSchema)
aa = stwrite.ToString
Clientesxml = (aa)
End Function



2->Despues sin tocar nada grabo los datos, pero me duplica la informacion
que me traje.



Public Function UpdateData() As Boolean
Dim miConexion As New
SqlConnection(Configuration.ConfigurationSettings.AppSettings("ConectoaPrueb
a1"))
Dim miTransaccion As SqlTransaction
Try
miConexion.Open()
miTransaccion = miConexion.BeginTransaction()
Dim miComando As New SqlCommand("select * from ScDtoCte where
c_cliente = '" & zccliente.Text & "'", miConexion, miTransaccion)
Dim miDataAdapter As New SqlDataAdapter(miComando)
Dim miCommandBuilder As New SqlCommandBuilder(miDataAdapter)
miDataAdapter.InsertCommand miCommandBuilder.GetInsertCommand()
miDataAdapter.UpdateCommand miCommandBuilder.GetUpdateCommand()
miDataAdapter.DeleteCommand miCommandBuilder.GetDeleteCommand()
miDataAdapter.Update(xtransA, "Clientes")
miTransaccion.Commit()

Catch err As Exception
Dim pp As String
pp = err.ToString
miTransaccion.Rollback()
MessageBox.Show(err.ToString)
Return False
Finally
If (miConexion.State = ConnectionState.Open) Then
miConexion.Close()
End If
End Try
Return True
End Function



3-> Ahora si yo en lugar de ir a buscar los datos me genero la
informacion directamente con un dataset
esto funciona todo bien



Private Sub CARGO_CLIENTE(ByVal fcclave)
xtransA.Clear()
Dim strSql1 As String
Dim conn As New
SqlClient.SqlConnection(Configuration.ConfigurationSettings.AppSettings("Con
ectoaPrueba1"))
strSql1 = "select * from SCDTOCTE Where c_cliente = '" & fcclave &
"'"
Dim da3 As New SqlClient.SqlDataAdapter(strSql1, conn)
da3.Fill(xtransA, "Clientes")
End Sub


Tenes idea porque puede pasar esto ??



Gracias Fabian
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida