{ ------------------------------------------------------------------ PROGRAMA : IRPRMT014 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Maestra Movimientos Por Usuario PROGRAMADOR : Tadeo A. Ferreras F. FECHA REALIZACION : mayo 06, 1996 ------------------------------------------------------------------ } GLOBALS "irprgb000.4gl" DEFINE p_irtb18 RECORD LIKE irtb00018.* DEFINE usu_ant CHAR(9) DEFINE descrip CHAR(30) DEFINE numero INTEGER MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL irprmt014() END MAIN FUNCTION irprmt014() CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM irfmmt014 FROM "irfmmt014" DISPLAY FORM irfmmt014 CALL pantalla() DISPLAY "irprmt014" AT 4,3 DISPLAY "Maestra de Movimientos Por Usuario" at 6,23 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" CLEAR FORM LET INT_FLAG = FALSE CALL irpcad014() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" LET INT_FLAG = FALSE CALL irpcmf014() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION irpcad014() ## Captura los datos que va a contener el registro INPUT BY NAME p_irtb18.* ## Verifica que el codigo no exista en el catalogo de p_irtb18. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_mov IF p_irtb18.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov END IF SELECT i.descrip_mov INTO descrip FROM irtb00005 i WHERE i.cod_mov = p_irtb18.cod_mov IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_mov END IF DISPLAY BY NAME descrip AFTER FIELD usuario IF p_irtb18.usuario IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD usuario END IF SELECT UNIQUE i.* FROM irtb00018 i WHERE i.cod_mov = p_irtb18.cod_mov AND i.usuario = p_irtb18.usuario IF status != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_mov 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 irtb00018 VALUES (p_irtb18.*) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM END FUNCTION FUNCTION irpcmf014() CLEAR FORM ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON a.cod_mov,a.usuario FROM cod_mov,usuario IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = "SELECT UNIQUE a.rowid,a.*,b.descrip_mov ", "FROM irtb00018 a, irtb00005 b ", "WHERE a.cod_mov = b.cod_mov AND ",criterio CLIPPED, "ORDER BY a.cod_mov,a.usuario " PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO numero,p_irtb18.*,descrip IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME p_irtb18.*,descrip MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO numero,p_irtb18.*,descrip IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME p_irtb18.*,descrip COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO numero,p_irtb18.*,descrip IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME p_irtb18.*,descrip COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO numero,p_irtb18.*,descrip DISPLAY BY NAME p_irtb18.*,descrip LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO numero,p_irtb18.*,descrip DISPLAY BY NAME p_irtb18.*,descrip LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" LET usu_ant = p_irtb18.usuario INPUT BY NAME p_irtb18.* WITHOUT DEFAULTS ## Verifica que el codigo no exista en el catalogo de p_irtb18. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_mov IF p_irtb18.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov END IF SELECT i.descrip_mov INTO descrip FROM irtb00005 i WHERE i.cod_mov = p_irtb18.cod_mov IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_mov END IF DISPLAY BY NAME descrip AFTER FIELD usuario IF p_irtb18.usuario IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD usuario END IF SELECT UNIQUE i.* FROM irtb00018 i WHERE i.cod_mov = p_irtb18.cod_mov AND i.usuario = p_irtb18.usuario AND i.usuario != usu_ant IF status != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_mov END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF UPDATE irtb00018 SET (cod_mov,usuario)=(p_irtb18.cod_mov,p_irtb18.usuario) WHERE rowid = numero LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" DELETE FROM irtb00018 WHERE rowid = numero LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION