1. Tenemos nuestras tablas en Infopath de la siguiente manera.
si se dan cuenta mi tabla principal es "Equipo" y debajo de ella existen muchas mas, sin embargo yo necesito datos de la que se llama "Detalle_Activo".
Necesito obtener la información de los siguientes campos para armar una DataTable y después enviar dicha información.
- Marca
- Subclasificación
- Numero de serie equipo
- Usuario unidad
recordemos que Marca y Subclasificación están en la tabla superior llamada "Equipo" y Numero de serie equipo y Usuario unidad, se encuentran en la ultima tabla que esta anidada en la primera.
2. Pues comenzamos con el código, primero creando nuestro objeto DataTable.
3. Creamos Columnas y les agregamos información que nos servirán como cabeceras.
4. Creamos nuestro XPathNavigator y XPathNodeIterator para poder recorre nuestras Tablas.
5. Y aquí viene la parte medular, donde recorremos las tablas y agregamos los valores a nuestro DataTable.
Explicación del codigo:
- Comenzamos con un While que recorre la tabla principal
- En este caso obtener los valores de Marca y SubClasificacion no es el problema estos los almacenamos en las variables.(Marca y Modelo).
- en la fila que revisamos verificamos si tiene hijos usando HasChildren si esta es verdadera entonces nos movemos a la fila hijo usando MoveToFirstChild.
- Usamos la variable LocalName para obtener el nombre de la fila hijo en la que estamos posicionados.
- mediante un If verificamos que la fila hijo en la que estamos sea "Detalle_Activo" que es la tabla repetida anidada al final.
- si entra dentro de nuestro If vamos a almacenar el Current.OuterXml que es un xml que contiene los campos Numero de serie equipo y Usuario unidad, creamos un XmlDocument, luego lo cargamos y buscamos los nodos "my:Usuario_Unidad" y "my:Numero_Serie_Equipo" que contienen los datos que necesitamos, usando InnerText obtenemos los valores de estos nodos en el actual registro, los guardamos en variables y por ultimo agregamos un row a nuestro Table.
De esta manera podemos recorrer tablas repetidas anidadas.
Saludos.
Oscar Miguel Dominguez Acevedo.
No hay comentarios:
Publicar un comentario