Simulación
Inicio: 2 diciembre de 2020 a la 1:05 a.m aprox.
La simulación la incio cargando y parseando el XML con los datos:
Aquí no hubo ningún problema porque es el mismo código para obtener datos del XML de la progra pasada.
Declaramos una tabla para agregar las fechas parseadas del XML y así poder recorrer una a una más adelante.
Declaramos las variables principales que usaremos en la iteración.
Y también le asignamos su valor correspondiente, obtenido de la tabla temporal que hicimos al incio.
Se utilizó la función MIN y MAX para obtener el máx fecha y el min fecha de la tabla.
Se obtuvo del siguiente link:
https://social.msdn.microsoft.com/Forums/es-ES/a250b7f6-84dd-4c20-aa58-14a3a9f8c52b/max-y-min-con-fechas-en-sql?forum=sqlserveres
(20 min)
En la siguiente parte creamos un ciclo que irá aumentando de 1 en 1, el cual irá comparando el indice de la tabla fecha el cual es identity, para entonces poder obtener la fecha correspondiente y para cada acción.
Para obtener la fecha se implementó una de las opciones vista en el siguiente enlace, no se exactamente como funciona:
https://stackoverflow.com/questions/62855424/sql-server-xquery-node-processing-problem
En esta parte insertamos a las personas, pero se insertan con su respectivo día, me constó lograr que insertara día a día, pero después encontré un código en el siguiente link que solucionó mi problema de filtrado, ya que el insertado era exactamente el mismo de la tarea anterios, entonces sólo copie y pegué el código:
https://stackoverflow.com/questions/62855424/sql-server-xquery-node-processing-problem
Después de esto, realicé lo mismo para todas las demás acciones. (1 hora) ya que duré mucho en encontrar la solución para filtrar los datos.
Después para insertar la CuentaAhorro hubieron muchos inconvenientes:
Ya que al momento de insertar de la misma manera que los anteriores y que la progra pasada, el Trigger sólo obtenía la última cuenta de cada día, lo cual en ocasiones se perdían muchísimas.
Por lo que perdí aproximadamente 1 hora a prueba y error tratando de solucionarlo, al final no pude y por eso tuve que implementar otra solución que fue vista o referenciada desde los siguientes links:
https://www.sqlshack.com/table-valued-parameters-in-sql-server/
https://www.kyocode.com/2018/05/sumar-o-restar-dias-a-una-fecha-en-sql-server/
https://codingsight.com/passing-data-table-as-parameter-to-stored-procedures/
Los cuales me indican que la solución es crear una tabla de USER-DEFINE TABLE TYPES, lo cual es como una estructura para poder declarar una tabla tipo variable en la simulación y así poder almacenar los datos para después enviarlos a un SP que se encargue de iterar la tabla nuevamente y agregar los datos correspondientes.
Aquí está la estructura realizada para dichas tablas:
Después en esta parte realizo un borrado de la tabla para que en cada iteración inicie vacía y la llenamos y enviamos los valores al SPInsertarCuentasAhorro
La verdad no estaba seguro si iba a funcionar, pero como el SP iba a iterar los datos uno a uno, era una muy posible solución para que cada que insertara una cuenta de ahorro, el trigger se disparara y creara su estado de cuenta respectivo.
Ya que anterior a eso sólo se agregaba el último dato del día.
Declaramos las variables que vamos a utilizar y después dentro del While que recorrerá la tabla uno a uno, se inicializan las variables con sus respectivos valores cada que haya un nuevo recorrido.
Para insertar beneficiarios,usuarios y Usuarios Pueden accesar, simplemente se tomó el código de la progra anterior al cargar XML.
Por último con los movimientos se realizó el mismo proceso de cargar cuentas de ahorro, se declaró una tabla variable y se insertaron los movimientos en ella para después ser enviados al SP correspondiente. Ya esta parte no fue tan tediosa porque ya había realizado algo muy similar anteriormente.
SP:
Muy similar al SP de cuentaAhorro, se declaran las variables a utilizar, y dentro del ciclo de van asignando para que en cada recorrido tengan el valor correspondiente a cada movimiento.
Después se divide en 2 pequeñas partes, en caso de que el tipo sea menor a 4 entonces el monto resta, y en caso de ser mayor o igual, el monto suma. Después de ese cálculo, ya insertamos lo movimientos con sus id Correspondientes de cuenta ahorro y estado de cuenta.
(45 min aprox)
Se tardó aproximadamente 4 horas y 30 minutos.
Otros links:
https://www.youtube.com/watch?v=nt0CLy3GRiI&ab_channel=ByEdark
https://www.youtube.com/watch?v=Z0y0fzaFBKc&ab_channel=BenignoQuilcaGuerrero



















Comentarios
Publicar un comentario