{ ------------------------------------------------------------------ PROGRAMA : PRPRMT004 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Operacion. PROGRAMADOR : Tadeo A. Ferreras F. FECHA REALIZACION : Junio 14, 1993. ------------------------------------------------------------------ } 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 prprmt004() END MAIN FUNCTION prprmt004() # WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ctfmmt005 FROM "prfmmt005" DISPLAY FORM ctfmmt005 # CALL pantalla() DISPLAY "prprmt004" AT 4,3 DISPLAY "Catalogo de Operacion" AT 6,29 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" LET int_flag = FALSE CLEAR FORM CALL prpcad004() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" LET INT_FLAG = FALSE CALL prpcmf004() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION prpcad004() #WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro LET int_flag = false LABEL vuelve: INPUT BY NAME prtb05.* AFTER FIELD codigo IF prtb05.codigo is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD codigo END IF LET prtb05.descripcion = null LET prtb05.status_t = null LET prtb05.us_crea = null LET prtb05.fech_crea = null LET prtb05.us_mod = null LET prtb05.fech_mod = null DISPLAY BY NAME prtb05.* SELECT a.* INTO prtb05.* FROM prtb00005 a WHERE a.codigo = prtb05.codigo IF prtb05.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) DISPLAY BY NAME prtb05.* NEXT FIELD codigo END IF IF status != notfound THEN LET numero_msg = 12 CALL msg(numero_msg) DISPLAY BY NAME prtb05.* NEXT FIELD codigo END IF AFTER FIELD descripcion IF prtb05.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 prtb05.codigo is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD codigo END IF SELECT a.* INTO prtb05.* FROM prtb00005 a WHERE a.codigo = prtb05.codigo IF prtb05.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) DISPLAY BY NAME prtb05.* NEXT FIELD codigo END IF IF status != notfound THEN LET numero_msg = 3 CALL msg(numero_msg) DISPLAY BY NAME prtb05.* NEXT FIELD codigo END IF EXIT INPUT END INPUT INSERT INTO prtb00005 VALUES (prtb05.codigo,prtb05.descripcion, null,usuarios,getdate(),null,null) LET numero_msg = 1 CALL msg(numero_msg) GOTO vuelve END FUNCTION FUNCTION prpcmf004() #WHENEVER ERROR CONTINUE LET int_flag = false ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON prtb00005.* FROM prtb00005.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE * FROM prtb00005 ", " WHERE status_t is null and ", criterio clipped," ORDER BY 1" PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO prtb05.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME prtb05.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO prtb05.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME prtb05.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO prtb05.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME prtb05.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO prtb05.* DISPLAY BY NAME prtb05.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO prtb05.* DISPLAY BY NAME prtb05.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF prtb05.status_t="E" THEN LET numero_msg= 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME prtb05.descripcion WITHOUT DEFAULTS AFTER FIELD descripcion IF prtb05.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 prtb05.descripcion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descripcion END IF EXIT INPUT END INPUT #### Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF UPDATE prtb00005 SET descripcion = prtb05.descripcion, us_mod = usuarios, fech_mod = getdate() WHERE @codigo = prtb05.codigo LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" UPDATE prtb00005 SET status_t ="E" , us_mod = usuarios, fech_mod = getdate() WHERE @codigo = prtb05.codigo LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" EXIT MENU END MENU END FUNCTION