{ ------------------------------------------------------------------ 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" " Adiciona Registro Cancela Operacion" let int_flag = false CLEAR FORM CALL prpcpr010() COMMAND "Consultar-modificar" " Realiza Busqueda 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" " Actualiza Registro 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