馃捇 Lenguaje Progress 4GL: C贸mo 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
- Como instalar Open Edge para practicar estos ejemplos
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
Publicar un comentario
Dejanos tus dudas y comentarios