{ ------------------------------------------------------------------ PROGRAMA : INPRMT007 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Unidades de Medidas. PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Agosto 1, 1992. ------------------------------------------------------------------ } GLOBALS "isprgb000.4gl" FUNCTION isprmt007() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM isfmmt007 FROM "isfmmt007" DISPLAY FORM isfmmt007 CALL pantalla() DISPLAY "isprmt007" AT 4,3 ATTRIBUTE(RED) DISPLAY "Mantenimiento Unidades de Medidas" AT 6,23 ATTRIBUTE(BLACK) MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" let int_flag = false CLEAR FORM CALL ispcad007() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" let int_flag = false CALL ispcmf007() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION ispcad007() WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME medidas.* ## Verifica que el codigo no exista en el catalogo de unidades. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD codigo_unidad IF medidas.codigo_unidad IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD codigo_unidad ELSE SELECT * INTO medidas.* FROM intb00007 WHERE codigo_unidad = medidas.codigo_unidad IF status >= 0 THEN IF status != NOTFOUND THEN IF medidas.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD codigo_unidad END IF DISPLAY BY NAME medidas.* LET numero_msg = 12 CALL msg(numero_msg) LET medidas.descripcion = NULL NEXT FIELD codigo_unidad END IF ELSE CALL integridad() IF bandera = 1 THEN CLEAR SCREEN RETURN END IF END IF END IF AFTER FIELD descripcion IF medidas.descripcion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descripcion END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF medidas.descripcion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descripcion ELSE INSERT INTO intb00007 VALUES (medidas.codigo_unidad,medidas.descripcion, null, USER, CURRENT, null, null) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM LET medidas.codigo_unidad = NULL LET medidas.descripcion = NULL NEXT FIELD codigo_unidad END IF AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION ispcmf007() ## Aqui se prepara para la captura del criterio de seleccion WHENEVER ERROR CONTINUE CONSTRUCT criterio ON intb00007.* FROM intb00007.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE * FROM intb00007 where ", " status_t is null and ", criterio clipped, " ORDER BY 1" PREPARE busca FROM selec CALL integridad() if bandera = 1 THEN CLEAR SCREEN RETURN end if DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO medidas.* 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 medidas.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO medidas.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME medidas.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO medidas.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME medidas.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO medidas.* DISPLAY BY NAME medidas.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO medidas.* DISPLAY BY NAME medidas.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF medidas.status_t = "E" THEN LET numero_msg = 39 CALL msg(numero_msg) RETURN END IF INPUT BY NAME medidas.descripcion, medidas.us_crea, medidas.fech_crea, medidas.us_mod, medidas.fech_mod WITHOUT DEFAULTS AFTER FIELD descripcion IF medidas.descripcion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descripcion END IF #### Verifica si el usuario presiono la tecla AFTER 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 UPDATE intb00007 SET descripcion = medidas.descripcion, us_mod = USER, fech_mod = CURRENT WHERE codigo_unidad = medidas.codigo_unidad LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE intb00007 SET status_t = "E" WHERE codigo_unidad = medidas.codigo_unidad LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION