{ ------------------------------------------------------------------ PROGRAMA : IRPRMT009 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Maquinas. PROGRAMADOR : Ing. Juan Fco. Soto. FECHA REALIZACION : Marzo 2, 1993. ------------------------------------------------------------------ } GLOBALS "irprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "decomarmol" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL irprmt009() END MAIN FUNCTION irprmt009() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM irfmmt009 FROM "irfmmt009" DISPLAY FORM irfmmt009 DISPLAY "irprmt009" AT 4,3 DISPLAY "Maquinas" AT 6,35 MENU ON ACTION Adicionar let int_flag = false CLEAR FORM CALL irpcad009() ON ACTION buscar let int_flag = false CALL irpcmf009() ON ACTION salir EXIT MENU END MENU END FUNCTION FUNCTION irpcad009() # WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME maquinaria.* ## Verifica que el codigo no exista en el catalogo de maquinas. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD codigo IF maquinaria.codigo is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD codigo ELSE SELECT * INTO maquinaria.* FROM irtb00009 WHERE codigo = maquinaria.codigo IF status >= 0 THEN IF status != NOTFOUND THEN IF maquinaria.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD codigo END IF DISPLAY BY NAME maquinaria.* LET numero_msg = 12 CALL msg(numero_msg) LET maquinaria.nombre = NULL NEXT FIELD codigo END IF END IF END IF AFTER FIELD nombre IF maquinaria.nombre IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre END IF AFTER FIELD serie IF maquinaria.serie IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD serie END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF maquinaria.serie IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD serie END IF IF maquinaria.nombre IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre ELSE INSERT INTO irtb00009 VALUES (maquinaria.codigo, maquinaria.nombre, maquinaria.unidad_med, maquinaria.modelo,maquinaria.serie, maquinaria.fabricante, null, usuarios, getdate(), null, null) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM LET maquinaria.codigo = NULL LET maquinaria.nombre = NULL NEXT FIELD codigo END IF AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION irpcmf009() ## Aqui se prepara para la captura del criterio de seleccion WHENEVER ERROR CONTINUE CONSTRUCT criterio ON irtb00009.codigo FROM irtb00009.codigo IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE * FROM irtb00009 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 maquinaria.* IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF end if DISPLAY BY NAME maquinaria.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO maquinaria.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME maquinaria.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO maquinaria.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME maquinaria.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO maquinaria.* DISPLAY BY NAME maquinaria.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO maquinaria.* DISPLAY BY NAME maquinaria.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF maquinaria.status_t = "E" THEN LET numero_msg = 39 CALL msg(numero_msg) RETURN END IF INPUT BY NAME maquinaria.* WITHOUT DEFAULTS BEFORE FIELD codigo NEXT FIELD nombre AFTER FIELD nombre IF maquinaria.nombre IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre END IF AFTER FIELD serie IF maquinaria.serie IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD serie 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 UPDATE irtb00009 SET nombre = maquinaria.nombre, modelo = maquinaria.modelo, unidad_med = maquinaria.unidad_med, serie = maquinaria.serie, fabricante = maquinaria.fabricante, us_mod = USUARIOS, fech_mod = GETDATE() WHERE codigo = maquinaria.codigo LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE irtb00009 SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE() WHERE codigo = maquinaria.codigo LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION