Visual Basic.NET - Readxml y cláusula For XML

 
Vista:

Readxml y cláusula For XML

Publicado por ismael (19 intervenciones) el 30/05/2007 13:58:44
hola a todos,
estoy intentando automatizar la carga y descarga de datos de una BBDD SQL SERVER 2000 mediante xml. El caso es que a la hora de leer los datos de las tablas utilizo un procedimiento almacenado donde recojo datos de dos tablas con una cláusula 'For XML' para que me devuelva los datos como una estructura de XML de elementos:

SELECT Creel.CREEL_ID, Creel.COMPLETION_STATUS, Creel.ERROR_MESSAGE, Creel.DATE_TIME,
Position.CREEL_ID, Position.CREEL_POSITION, Position.IN_TUB_ID,
Position.OUT_TUB_ID, Position.OUT_TUB_STATUS
FROM CREELS Creel
INNER JOIN CREEL_POSITIONS Position ON Creel.CREEL_ID = Position.CREEL_ID
ORDER BY Creel.CREEL_ID, Position.CREEL_POSITION
FOR XML AUTO, ELEMENTS

esto me devuelve algo así:
<Creel>
<CREEL_ID>100000000000000</CREEL_ID>
<COMPLETION_STATUS>1</COMPLETION_STATUS>
<DATE_TIME>2007-01-01T09:00:00</DATE_TIME>
<Position>
<CREEL_ID>100000000000000</CREEL_ID>
<CREEL_POSITION>1</CREEL_POSITION>
<IN_TUB_ID>2 </IN_TUB_ID>
<OUT_TUB_ID>1 </OUT_TUB_ID>
<OUT_TUB_STATUS>EMPTY </OUT_TUB_STATUS>
</Position>
</Creel>
<Creel>
<CREEL_ID>110000000000000</CREEL_ID>
<COMPLETION_STATUS>1</COMPLETION_STATUS>
<DATE_TIME>2007-01-01T09:00:00</DATE_TIME>
<Position>
<CREEL_ID>110000000000000</CREEL_ID>
<CREEL_POSITION>1</CREEL_POSITION>
<IN_TUB_ID>2 </IN_TUB_ID>
<OUT_TUB_ID>1 </OUT_TUB_ID>
<OUT_TUB_STATUS>EMPTY </OUT_TUB_STATUS>
</Position>
</Creel>

Una vez que lanzo esta consulta en vb.net, y me devuelve esto en un xmlreader mediante la sentencia:
xmlreader1 = xmlrElem = cm.ExecuteXmlReader

cargo los datos en un dataset:
dataset1.ReadXml(xmlreader1 )

pero en el dataset no me está cargando todos los datos, solo me carga los datos del primer elemento, es decir lo que está entre el primer <Creel> y el primer </Creel>. Los datos del siguiente elemento no me los carga.
¿Alguién sabe porque puede pasar esto?, en todos los ejemplos que he buscado me dicen que se hace así.
Estoy haciéndolo mal?, hay alguna otra forma?

lo que quiro hacer cuando tengo cargado en el dataset estos datos es guadarlos en un fichero con la sentencia:
dataset1.WriteXml("fichero.xml")
esto no da problemas, genera el fichero con los datos del dataset, pero como éste no está c ompleto pues no me vale.

gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder