El día de ayer se trabajó en actualizar el parseo de los xml. se puso especial importancia en el parseo de las operaciones, debido a que el formato de estas y la forma en la que funcionan era lo mas complejo de todo.
Al principio se intento cargarlo de forma similar a como se hacia con los catalogos, pero esto no funcoinó de la forma espedaba y no cargaba bien los datos, luego de varias horas de intentos se logró tener algo que se pensaba que fincionaba, la forma en la que se hizo fue una tabla de la forma
fecha - nuevo empleado - asocia empleado - desasocia empleado - tipo de jornada - marca de asistencia
donde todos estas columnas, excepto fecha, eran de tipo xml y ahí se insertaban los nodos de cada tipo para luego ser leidos, el problema de esto es ue por alguna razon solo se cargaba el priemr nodo de cada tipo, por lo que se perdian todos los datos.
la siguiente solucion, que feu la que terminó funcionando, fue crear una nueva columna, que contenia todo el nodo xml de esta fecha, luego de esto, iteramos por la tabla, y movemos cada subnodo a la columna correspondiente. y finalmente iteramos de nuevo para realizar las operaciones
el codigo de mover los nodos se ve de esta forma para las instrucciones de nuevo empleado:
DECLARE @main xml = '<root></root>'
--plantilla para cuando insertemos las operaciones a las comunas
--iteramos por la tabla
WHILE @CursorTestID <= @RowCnt
BEGIN
-- en los update lo que hacemos es tomar los nodos con el nombre necesario de cada dia
-- y moverlos a la columna necesaria
--insertamos las operaciones de insertar empleados
UPDATE @TablaOperaciones
SET NuevoEmpleado = (
SELECT @main.query('/root/*'), XmlData.query('/Operacion/NuevoEmpleado')
FOR XML RAW(''),ROOT('root'), ELEMENTS, TYPE
)
WHERE ID = @CursorTestID and NuevoEmpleado IS NOT NULL
Con esto obtenemos columnas de la siguiente forma (el ejemplo es para la primera fecha)
<root>
<NuevoEmpleado FechaNacimiento="1976-04-11" Nombre="Mario Saez Garrido" Password="5243" Username="MSaez" IdDepartamento="1" ValorDocumentoIdentidad="22047868" idPuesto="10" idTipoDocumentacionIdentidad="2" />
<NuevoEmpleado FechaNacimiento="2000-04-20" Nombre="Alana Marquez Vargas" Password="7122" Username="AMarquez" IdDepartamento="2" ValorDocumentoIdentidad="41435973" idPuesto="6" idTipoDocumentacionIdentidad="1" />
<NuevoEmpleado FechaNacimiento="1961-12-19" Nombre="Pedro Perez Moya" Password="5564" Username="PPerez" IdDepartamento="3" ValorDocumentoIdentidad="39069386" idPuesto="1" idTipoDocumentacionIdentidad="1" />
<NuevoEmpleado FechaNacimiento="1965-11-07" Nombre="Carlos Alberto Moya Gomez" Password="1662" Username="CMoya" IdDepartamento="4" ValorDocumentoIdentidad="73248587" idPuesto="9" idTipoDocumentacionIdentidad="1" />
<NuevoEmpleado FechaNacimiento="1995-09-02" Nombre="Miguel Angel Romero Fuentes" Password="7999" Username="MRomero" IdDepartamento="1" ValorDocumentoIdentidad="23833627" idPuesto="1" idTipoDocumentacionIdentidad="2" />
<NuevoEmpleado FechaNacimiento="1965-05-16" Nombre="Joaquin Molina Cano" Password="8885" Username="JMolina" IdDepartamento="2" ValorDocumentoIdentidad="59687950" idPuesto="10" idTipoDocumentacionIdentidad="1" />
<NuevoEmpleado FechaNacimiento="1983-03-23" Nombre="Gabriela Saez Lozano" Password="7489" Username="GSaez" IdDepartamento="3" ValorDocumentoIdentidad="84844600" idPuesto="5" idTipoDocumentacionIdentidad="1" />
<NuevoEmpleado FechaNacimiento="1964-03-04" Nombre="Isaac Pascual Fuentes" Password="5981" Username="IPascual" IdDepartamento="4" ValorDocumentoIdentidad="58053945" idPuesto="8" idTipoDocumentacionIdentidad="1" />
<NuevoEmpleado FechaNacimiento="1982-08-06" Nombre="Tania Molina Moreno" Password="8393" Username="TMolina" IdDepartamento="1" ValorDocumentoIdentidad="10224175" idPuesto="6" idTipoDocumentacionIdentidad="2" />
<NuevoEmpleado FechaNacimiento="1974-03-24" Nombre="Karla Patricia Marin Crespo" Password="1784" Username="KMarin" IdDepartamento="2" ValorDocumentoIdentidad="70460298" idPuesto="10" idTipoDocumentacionIdentidad="1" />
</root>
Que ya visto en la BD se ve así:
Si bien de momento no hacemos naa con los datos, ya ahora es basicamente hacer lo mismo que haciamos con los catalogos, solo hay que iterar la tabla final e ir ejecutando instrucciones columna por columna
- Oswaldo 5 horas
Comentarios
Publicar un comentario