Files
MBS/PROYECTO/PRDIR/prprmt010.4gl
T

325 lines
9.2 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : PRPRMT010
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Areas de Instalacion.
PROGRAMPROR : Victor Gomez C.
FECHA REALIZACION : Friday, October 05, 2001
------------------------------------------------------------------
}
GLOBALS "prprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
CALL prprmt010()
END MAIN
FUNCTION prprmt010()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM prfmmt010 FROM "prfmmt010"
DISPLAY FORM prfmmt010
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Supr> Cancela Operacion"
let int_flag = false
CLEAR FORM
CALL prpcpr010()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Supr> Cancela Operacion"
let int_flag = false
CALL prpcmf010()
COMMAND "Imprimir"
let int_flag = false
CALL primp010()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION prpcpr010()
# WHENEVER ERROR CONTINUE
## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO
INPUT BY NAME prtb16.*
BEFORE FIELD area_num
SELECT MAX(area_num) INTO prtb16.area_num FROM prtb00016
IF prtb16.area_num IS NULL THEN
LET prtb16.area_num = 0
END IF
LET prtb16.area_num = prtb16.area_num + 1
DISPLAY BY NAME prtb16.area_num
NEXT FIELD nombre_area
{
AFTER FIELD area_num
IF prtb16.area_num IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD area_num
ELSE
SELECT a.* INTO prtb16.* FROM prtb00006 a
WHERE a.area_num = prtb16.area_num
IF status >= 0 THEN
IF status != NOTFOUND THEN
IF prtb16.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD area_num
END IF
DISPLAY BY NAME prtb16.*
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD area_num
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
END IF
END IF
}
AFTER FIELD nombre_area
IF prtb16.nombre_area is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nombre_area
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
INSERT INTO prtb00016 VALUES (prtb16.*)
UPDATE prtb00016 SET (us_crea,fech_crea) = (SUSER_SNAME(),GETDATE())
WHERE @area_num = prtb16.area_num
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
END FUNCTION
FUNCTION prpcmf010()
## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA
## MODIFICACION DE REGISTROS
# WHENEVER ERROR CONTINUE
CONSTRUCT BY NAME criterio ON a.area_num,a.nombre_area
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE a.* FROM prtb00016 a ",
" WHERE a.status_t is null and ",criterio clipped," ORDER BY a.area_num"
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
DECLARE dato SCROLL CURSOR FOR busca
OPEN dato
FETCH FIRST dato INTO prtb16.*
IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
END IF
DISPLAY BY NAME prtb16.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrpro"
FETCH NEXT dato INTO prtb16.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME prtb16.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrpro"
FETCH PREVIOUS dato INTO prtb16.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME prtb16.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrpro"
FETCH FIRST dato INTO prtb16.*
DISPLAY BY NAME prtb16.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrpro"
FETCH LAST dato INTO prtb16.*
DISPLAY BY NAME prtb16.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Supr> Cancela Operacion"
IF prtb16.status_t = "E" THEN
LET numero_msg = 39
CALL msg(numero_msg)
RETURN
END IF
## SE SELECCIONAN LOS CAMPOS QUE SON MODIFICABLES
INPUT BY NAME prtb16.nombre_area,
prtb16.us_crea,
prtb16.fech_crea,
prtb16.us_mod,
prtb16.fech_mod WITHOUT DEFAULTS
AFTER FIELD nombre_area
IF prtb16.nombre_area is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nombre_area
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
CALL integridad()
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
## AQUI SE ACTUALIZA EL REGISTRO
UPDATE prtb00016 SET nombre_area = prtb16.nombre_area,
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE @area_num = prtb16.area_num
LET numero_msg = 13
CALL msg(numero_msg)
## AQUI SE ELIMINAN LOS REGISTROS
COMMAND KEY ("L") "eLiminar"
UPDATE prtb00016 SET status_t = "E"
WHERE a.area_num = prtb16.area_num
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION primp010()
DEFINE pprtb16 RECORD LIKE prtb00016.*
DISPLAY "IMPRESION EN PROCESO...." AT 20,1
DECLARE busca_area CURSOR FOR
SELECT a.* FROM prtb00016 a
WHERE a.status_t IS NULL
ORDER BY 2
START REPORT imparea TO "c:\\archivo"
FOREACH busca_area INTO pprtb16.*
OUTPUT TO REPORT imparea(pprtb16.*)
END FOREACH
FINISH REPORT imparea
RUN "type c:\\archivo > %USPRINT%"
DISPLAY " " AT 20,1
END FUNCTION
REPORT imparea(x)
DEFINE x RECORD LIKE prtb00016.*,
normal,comp_on,comp_off,doce,negrillas_on,negrillas_off,
doble_on,doble_off CHAR(2),
l SMALLINT
FORMAT
PAGE HEADER
LET normal = ASCII 27, ASCII 80
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ascii 77
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET doble_on = ASCII 14
LET doble_off = ASCII 20
PRINT COLUMN 1, normal
LET l = (60 - LENGTH(p_compania.nombre))/2
PRINT COLUMN l,doce,doble_on, p_compania.nombre CLIPPED,doble_off,
COLUMN 52,TODAY USING "DD/MM/YYYY"
LET l = (74- LENGTH("MAESTRA DE AREAS"))/2
PRINT COLUMN l, "MAESTRA DE AREAS",
COLUMN 70, "Pagina: ",pageno USING "<<<"
PRINT COLUMN 1, "-----------------------------------------------------------------"
PRINT COLUMN 1, "AREAS........."
PRINT COLUMN 1, "-----------------------------------------------------------------"
ON EVERY ROW
PRINT COLUMN 1, x.area_num USING "<<<<",
COLUMN 10, x.nombre_area
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 1,"Total Registros: ",COUNT(*) USING "<<<<"
END REPORT