SC_EXEC_SQL – Procesamiento de Datos desde Formulario | Scriptcase Blog - Development, Web Design, Sales and Digital Marketing

Procesamiento de Datos desde Formulario de Tipo Control: Utilizando macros de consulta e inserción a Base de Datos

El procesamiento de los datos se puede realizar a nivel de Base de Datos con Procedimientos Almacenados, Triggers, Funciones y demás; o a nivel Aplicación. Dependiendo de qué tan grande sea el volumen de datos a manejar y la interacción que el usuario deba tener una u otra pueden sobresalir como mejor opción en ciertos casos.

El procesamiento de datos que mostraremos como ejemplo es el realizado a nivel Aplicación, para el mismo tomaremos ciertos parámetros de la Base de Datos.

Por otro lado el usuario ingresará otros parametros para luego terminar realizando un cálculo e insertando el resultado en Base de Datos.

Utilizaremos las siguientes Macros Scriptcase para facilitar nuestro trabajo:

En cuanto a estructura de Base de Datos, tenemos dos tablas las cuales se muestran a continuación:

La tabla “Parameter” que se encuentra en una Base de Datos PostgreSQL.

procesamiento_de_datos_01

La tabla “Payment” que se encuentra en una Base de Datos MySQL

procesamiento_de_datos_02

El proceso que haremos busca calcular el porcentaje de interés que tendrá que pagar el usuario teniendo como base el monto deseado y la cantidad de cuotas (meses) que desea para devolverlo.

Dentro de la tabla “Parameter” tenemos el porcentaje de interés que abonará el usuario en base a la cantidad de meses que elija en nuestra aplicación.

procesamiento_de_datos_03

Ya dentro de nuestro proyecto en el Scriptcase creamos las conexiones que necesitaremos para consultar a la tabla en PostgreSQL (conn_Parameter) e insertar luego en la tabla MySQL (conn_Sales).

procesamiento_de_datos_04

Creamos a continuación una aplicación de tipo control de forma a agregar los campos que deseamos mostrar al usuario y luego realizar el proceso que calculará cuando deberá pagar el usuario y cuanto pagará cada mes incluyendo ya los intereses.

procesamiento_de_datos_05

El siguiente paso es crear los campos necesarios para que el usuario ingrese su nombre, monto deseado y la cantidad de cuotas. Nuestra aplicación al tener esos datos realizará una consulta a la tabla Parameter y retornará el porcentaje de interés a aplicar para la cantidad de cuotas seleccionada y el total a abonar.

Según lo anterior la aplicación tendrá 5 (cinco) campos, para ello damos clic en Control -> Campos -> “Nuevo Campo”, ingresamos la cantidad de campos a crear y damos clic en “Siguiente”.

procesamiento_de_datos_06

Ingresamos los datos para cada campo:

Usuario:

  • Tipo: Texto
  • Nombre: User
  • Etiqueta: User

Monto:

  • Tipo: Decimal
  • Nombre: Amount
  • Etiqueta: Amount

Cantidad de Cuotas (Meses):

  • Tipo: Select
  • Nombre: Months
  • Etiqueta: Months

Interés a abonar:

  • Tipo: Decimal
  • Nombre: Interest
  • Etiqueta: Interest

Total a devolver:

  • Tipo: Decimal
  • Nombre: Total
  • Etiqueta: Total

Por último damos clic en “Crear” de forma a guardar las configuraciones de cada campo creado.

procesamiento_de_datos_07

El siguiente paso es marcar como requeridos los campos de Usuario, Monto y Meses; y como solo lectura los campos del Porcentaje de Interés y el Total a devolver, esto lo hacemos desde la opción ubicada en Control -> Editar Campos.

procesamiento_de_datos_08

En el campo {Months} debemos mostrar los meses disponibles de forma a que el usuario elija en cuantos meses desea devolver el importe, por ello habíamos seleccionado el tipo de campo  SELECT.

procesamiento_de_datos_09

De forma a mostrar los datos se debe configurar la sección “Edición de Lookup” primeramente indicando en “Elija la conexión” la conexión a base de datos que queremos utilizar para obtener los datos. Luego damos clic en “Crear Select” y elegimos la tabla en cuestión, el id y el campo a mostrar.

procesamiento_de_datos_10

Con esto ya tenemos finalizada la parte visual y podemos empezar a trabajar con los procesos.

Obtener Porcentaje de Interes a aplicar:

En la sección Programación -> Métodos PHP damos clic en “Nuevo Método”, le indicamos el nombre que queremos darle (en nuestro ejemplo “ObtainParameter”) y clic en “Crear”.

procesamiento_de_datos_11

Una vez que tengamos la ventana de codificación abierta, para evitar tener que escribir todo el código que necesitamos podemos insertar el código de ejemplo que más se aproxima a nuestro objetivo. Como pueden observar en la siguiente imagen, utilizamos el código de “Selecting fields from another table” (Seleccionando campos de otra tabla) que utiliza la macro SC_LOOKUP y realizamos las modificaciones en base a la misma.

procesamiento_de_datos_12

Al código que Scriptcase nos proporciona, modificamos la Sentencia SQL que obtendrá los meses y el interés relacionado, además de agregar como filtro el campo {Months} que hace referencia al mes elegido por el usuario en nuestra aplicación.

Los parámetros que recibe la macro SC_LOOKUP son:

  • Nombre del Dataset a crear (en el ejemplo rsMonth).
  • Sentencia SQL (en el ejemplo la sentencia está almacenada en la variable $check_sql).
  • Conexión a Base de Datos a utilizar (en el ejemplo requerimos conectarnos al Postgres, por lo que la conexión debe ser conn_Parameter).

El siguiente paso es renombrar las variables y campos a ser asignados luego de que retorne los valores la macro y los almacene dentro del Dataset (rsMonth).

Creamos una variable de sesión ([NumofMonths]) de forma a almacenar la cantidad de cuotas o meses elegido, ya que el campo {Months} tiene el id de la tabla.

También asignamos al campo {Interest} el porcentaje de interés que se aplicará según el mes que el usuario eligió.

En caso de que la consulta no retorne valores, le asignaremos por defecto también valores y así prevemos cualquier mal funcionamiento no contemplado.

procesamiento_de_datos_13

Calcular Monto Total con el Interés:

Para ello no es necesario realizar consultas a la Base de Datos, ya que asignamos los valores anteriormente obtenidos a los campos de nuestra aplicación.

procesamiento_de_datos_14

Ya teniendo las dos funciones PHP que nos permitirán realizar los cálculos deseados, nos queda llamarlos cuando el usuario cambie el monto y/o la cantidad de meses deseados. Ello lo logramos utilizando los Eventos Ajax y eligiendo el evento deseado, para nuestro caso el evento es “onChange” lo que permitirá realizar el cálculo ante cualquier modificación.

procesamiento_de_datos_15

Luego seleccionar el campo deseado {Amount} y el evento onChange damos clic en “Crear Evento” de manera a que nos permita editar el mismo. Dentro agregamos la llamada a ambas funciones de forma a que realice ambos procesos.

Lo mismo repetimos con el campo {Months} de forma a que actualice los datos cada vez que cambie la cantidad de meses.

procesamiento_de_datos_16

El último paso es codificar el evento onValidateSuccess de manera a que inserte los pagos que el usuario deberá realizar teniendo en cuenta los meses y el importe con interés a abonar a lo largo de ese periodo.

Para ello primero calculamos y asignamos a la variable de sesión [Amount] el importe que deberá abonar cada mes.

Con un ciclo for deberemos recorrer el proceso de inserción tantas veces como meses haya seleccionado el usuario.

En la siguiente imagen se puede apreciar que también tenemos un código de ejemplo para la inserción. Tomando ese código como base, actualizamos los datos de nombre de tabla y columnas según nuestra estructura. Todo esto lo hacemos dentro de un bucle if que nos permitirá controlar que no se trate de la última cuota.

Los parámetros que recibe la macro SC_EXEC_SQL utilizada para la inserción son:

  • Sentencia SQL (en el ejemplo la sentencia está almacenada en la variable $insert_sql).
  • Conexión a Base de Datos a utilizar (en el ejemplo la tabla Payment está en el MySQL, por lo que la conexión debe ser conn_Sales).

Cabe mencionar que esta macro nos permite ejecutar cualquier Instrucción SQL en el Servidor de Base de Datos, por lo que es muy útil incluso para ejecutar procedimientos almacenados o incluso tareas de mantenimiento.

procesamiento_de_datos_17

Para la última cuota daremos un trato especial debido a que el redondeo de la división algunas veces puede no ser exacto, lo que ocasionaría al final que el Total a abonar y la suma de cuotas no sean iguales.

De manera a conseguir que la suma de las cuotas y el total a abonar sean iguales aplicamos a la última cuota la diferencia entre el Total a abonar y la suma de cuotas previamente insertadas.

procesamiento_de_datos_18

Luego de terminar de escribir el código, si le damos ejecutar, nos aparecerá la pantalla blanca solicitando que asignemos un valor a las variables utilizadas en la aplicación.

procesamiento_de_datos_19

Debido a que nuestras variables son para uso interno y no esperamos recibirlas, debemos cambiar el Tipo de Variable a “Salida”. Con eso evitaremos que nos vuelva a pedir al ejecutar la aplicación.

procesamiento_de_datos_20

Ahora sí, al darle ejecutar nos debe mostrar una aplicación similar a la de la siguiente imagen donde nos solicitará ingresar Usuario, Monto y seleccionar la cantidad de meses.

procesamiento_de_datos_21

Al dar clic en el botón de confirmación el proceso deberá insertar dentro de la tabla Payment una fila por cada cuota que debe abonar el usuario tal y como vemos en la siguiente imagen.

procesamiento_de_datos_22

Tambien te puede interesar

¿Scriptcase usa MVC?

En la actualidad es habitual la implementación del patrón de arquitectura de software llamado MV...

Cómo Implementar A2F usando un Desarrollo Propio en NodeJS en una aplicación Scriptcase

En un anterior a2f artículo hablamos de Swivel como herramienta externa para integrar nuestras apl...

Deshabilitar el relleno automático y autocompletar: Chrome

Hola, aquí quiero mostrar una alternativa para deshabilitar el relleno automático y el autocomplet...

Comentar este post

Reciba los nuevos post, novedades y ofertas!

Ingresa tu e-mail para recibir orientaciones y asistencia técnica durante el período de evaluación, además de comunicaciones como novedades y ofertas especiales de Scriptcase. Tu información será utilizada de acuerdo con nuestra política de privacidad. Puedes optar por no participar en cualquier momento