Ir al contenido principal

Lenguaje Progress 4gl como utilizar tablas temporales

Bienvenidos a este blog, en esta publicación veremos como crear una tabla temporal y colocar índices con el lenguaje Progress 4gl.

Primero veamos un ejemplo  en que ocasiones podríamos utilizar una tabla temporal en general no solo Progress:

  • Cuando hacemos un reporte normalmente vamos recuperando información de diferentes tablas de una base de datos y para ir guardando las filas con la información que necesitamos en muchas ocasiones necesitamos tener una tabla nueva donde ir almacenando las nuevas filas.
  • Si vamos a realizar más cálculos con los datos que obtenemos de diferentes tablas.
  • Queremos utilizarlo en reportes como Crystal Reports o en plantillas diferentes.
  • Cuando vamos a procesar el contenido de los datos, cuando vamos a realizar segmentaciones de los datos pero no lo vamos almacenar en una tabla física de base datos porque no se tarda mucho la generación de la información y no es una información que se genere con mucha frecuencia. 
La definición general de Progress es la siguiente en la imagen


En general están son las ventajas y desventajas de utilizar estas tablas temporales


Ahora veamos un ejemplo en Progress: quiero generar un programa que me lea un archivo de entrada y que con la tabla temporal en la que guardemos el archivo de entrada lo convirtamos en una carga CIM en QAD para crear ubicaciones en el módulo de activos fijos.

{us/mf/mfdtitle.i}
DEF VAR vc-in-file AS CHAR NO-UNDO.
DEF VAR v-totrec   AS INTEGER NO-UNDO.
DEF VAR v-toterr   AS INTEGER NO-UNDO. 
DEF VAR lv-outfile AS CHAR NO-UNDO. 
DEF VAR lv-cimfile AS CHAR NO-UNDO. 
DEF VAR v-err      AS LOGICAL NO-UNDO. 
/*******TABLA TEMPORAL**************/
DEF TEMP-TABLE tabla_datos no-undo
  field tt_loc   like ld_part
  field tt_des   like ld_site    
  field tt_ent   like ld_loc
  field tt_sub   like ld_lot
  field tt_cc    like ld_ref
  FIELD tt-error  as   character
INDEX ttDataCim
  tt_loc
  tt_des
  tt_ent
  tt_sub
  tt_cc.
/*******TABLA TEMPORAL**************/  
DEF FRAME a           
  vc-in-file   COLON 21 LABEL "File to charge" FORMAT "X(30)"
WITH WIDTH 80 SIDE-LABELS.  

UPDATE vc-in-file WITH FRAME a.    
  
INPUT FROM VALUE(vc-in-file).
  REPEAT:
    CREATE  tabla_datos.
    IMPORT DELIMITER ","  tabla_datos EXCEPT tt-error  .
  END. 
INPUT CLOSE.

FOR EACH tabla_datos  
    WHERE tt_loc  <> ""
    NO-LOCK
    BREAK BY tt_loc
          BY tt_des
          BY tt_ent
          BY tt_sub
          BY tt_cc.
    IF tt-error = "" THEN DO:
      
      ASSIGN
        v-totrec   = v-totrec + 1
        lv-outfile = tt_loc + ".cim"
        lv-cimfile =  tt_loc + ".log".
      
      OUTPUT TO VALUE(lv-outfile).
        
        
PUT UNFORMAT '"' tt_loc '" ' SKIP.
IF tt_des <> '' THEN 
           put unformat '"' tt_des '" ' .
ELSE 
   put unformat '-' .
IF tt_ent <> '' THEN 
           put unformat '"' tt_ent '" ' .
ELSE 
   put unformat '-' .
IF tt_sub <> '' THEN 
           put unformat '"' tt_sub '" ' .
ELSE 
   put unformat '-' .              
   
IF tt_cc <> '' THEN 
           put unformat '"' tt_cc '" ' skip.
ELSE 
   put unformat '-' skip.
        
PUT UNFORMAT '-' SKIP.
        PUT UNFORMAT '.' SKIP.
        PUT UNFORMAT '.' SKIP.
        
      OUTPUT CLOSE.
      
      DO TRANSACTION:  
        
        OUTPUT TO VALUE(lv-cimfile). 
          input from value(lv-outfile). 
            batchrun = true.        
              {us/bbi/gprun.i ""falcmt.p""}
            batchrun = false.   
            pause 0 before-hide.
          input close. 
        output close.  
        
        v-err = false. 
        
        if v-err then do: 
          v-toterr = v-toterr + 1.  
          undo, next. 
        END. 
        
      END. 
    END. 
END.
DISPLAY  "TOTAL errores" v-toterr.

Otros artículos en este blog acerca de Progress 4gl

Espero les haya gustado y servido esta publicación, comparta en sus redes sociales y también pueden seguirnos en este blog o en Facebook https://www.facebook.com/Programacionparatodosmsg/

Comentarios

Entradas más populares de este blog

Graficar funciones en Python con dataframes

Bienvenidos a un nuevo post, en esta semana, en esta ocasión les quiero platicar acerca de una librería en Python que se llama  matplotlib  que nos sirve para gráfica funciones de  matemáticas. Habitualmente en Python existen muchas librerías, lo que hay que hacer es primero investigar si ya existe alguna que nos ayude y entenderla antes de inventar el hilo negro, en mi caso encontré la librería  Matplotlib Para instalar deben utilizar el comando PIP en 2.7 Instalando en Python 3.7 Si tienen Python 2.7 deben realizar la ejecución de estos 2 comandos desde consola python -m pip install -U pip python -m pip install -U matplotlib Aunque lo más recomendable es utilizar la versión 3.7 o superior de Python. Programa para graficar en Python import matplotlib.pyplot as plt import numpy as np import math as mt def move_spines():     """Esta funcion divide pone al eje y en el valor      0 de x para dividir claramente los valores positivos y     negativos.&quo

Ejemplo Macro en Word

Hola: ¿Sabían que no solo en Excel pueden hacer Macros?  ¡¡¡También en Outlook, Word, Power Point,Access  es posible hacer Macros!!!  ☺️ Ya que Word, Excel, Power Point,Access son de familia Microsoft y Visual Basic también es que podemos programar nuestras macros en esta paquetería. Como hemos visto antes, para poder programar nuestras macros, necesitamos primero configurar la Barra de tareas de Developer o Desarrollador Seleccionan el Menu File>Options>Customize Ribbon o en Español Archivo>Opciones>barra de tareas Despues la parte de seguridad de las macros Menu File>Options>Trus Center o Archivo>Opciones>Centro de Seguridad y marcamos como se ve en la imagen, la cuarta opción y el combo Ejemplo Vamos hacer un ejemplo donde, tengamos que generar varios diplomas de fin de curso, pero con una lista de Nombres , entonces vamos a crear un nuevo archivo en Word y le vamos a guardar como tipo Macro  Tenemos una plantill

Ejemplo Python para leer imagen y transformarla en una matriz

Como hemos visto en otros post, Python nos permite hacer programas de manera más rápida, en esta ocasión quiero compartirles un ejemplo para leer un archivo de imagen y como convertirlo en una matriz o un arreglo. Aplicaciones Poder hacer ingeniería de datos, es decir poder convertir una misma imagen en diferentes todos y utilizarlos para machine learning para reconocimiento de gatos, para ello hay que mostrar muchas imágenes a nuestro modelo es decir entrenarlo, para ello hay que colocarle imágenes claras y imagenes que no sean tan claras por ejemplo, se pone la imagen original y se agrega "ruido" para que se vea en rojos, grises, verdes. Se pudo utilizar para un mapa , para poder ver datos a detalle Se puede aplicar para manipular imágenes, por ejemplo agregar efectos  Seguramente a ustedes se les pueden ocurrir más aplicaciones Les comparto el ejemplo de como hacerlo en Jupiter y para hacer el ejemplo voy a utilizar el logo del blog es una imagen de 500x500 pixeles Los Pas