{ ------------------------------------------------------------------------------- PROGRAMA : dsprmt005 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Menu de Opciones PROGRAMADOR : Oscar Castillo FECHA REALIZACION : Tuesday, 19 December, 2000 ------------------------------------------------------------------------------- } GLOBALS "dsprgb000.4gl" DEFINE opcion RECORD LIKE dstb00007.* FUNCTION dsprmt005() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 #LET formulario = formulario CLIPPED,"dsfmmt005" OPEN FORM dsfmmt005 FROM "dsfmmt005" DISPLAY FORM dsfmmt005 CALL pantalla() DISPLAY "dsprmt005" AT 4,3 ATTRIBUTE(RED) DISPLAY "Menu de Opciones" AT 6,32 ATTRIBUTE(BLACK) MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" CLEAR FORM LET int_flag = false CALL dspcad005() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" LET int_flag = false CALL dspcmf005() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION dspcad005() WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME opcion.* ## Verifica que el pais exista en el catalogo de opcion. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD menu1 IF opcion.menu1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD menu1 END IF SELECT a.* FROM dstb00007 a WHERE a.menu1 = opcion.menu1 IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD menu1 END IF SELECT a.* FROM dstb00004 a WHERE a.menu1 = opcion.menu1 AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD menu1 END IF AFTER FIELD tipo_menu IF opcion.tipo_menu IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_menu END IF AFTER FIELD ruta_grafica IF opcion.ruta_grafica IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ruta_grafica END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF opcion.menu1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD menu1 ELSE INSERT INTO dstb00007 VALUES (opcion.menu1, opcion.tipo_menu, opcion.ruta_grafica, USER,CURRENT,null,null) CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM { LET opcion.cod_pais = NULL LET opcion.nom_pais = NULL NEXT FIELD cod_pais } END IF END INPUT END FUNCTION FUNCTION dspcmf005() WHENEVER ERROR CONTINUE ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT BY NAME criterio ON a.menu1,a.tipo_menu,a.ruta_grafica IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = "SELECT a.* FROM dstb00007 a where ", criterio clipped, " ORDER BY 1" PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF FETCH FIRST datos INTO opcion.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME opcion.* MENU "OPCIONES" COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO opcion.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME opcion.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO opcion.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME opcion.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO opcion.* DISPLAY BY NAME opcion.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO opcion.* DISPLAY BY NAME opcion.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" INPUT BY NAME opcion.tipo_menu, opcion.ruta_grafica WITHOUT DEFAULTS AFTER FIELD tipo_menu IF opcion.tipo_menu IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_menu END IF AFTER FIELD ruta_grafica IF opcion.ruta_grafica IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ruta_grafica END IF AFTER 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 dstb00007 SET tipo_menu = opcion.tipo_menu, ruta_grafica = opcion.ruta_grafica, us_mod = USER, fecha_mod = CURRENT WHERE @menu1 = opcion.menu1 LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" DELETE FROM dstb00007 WHERE menu1 = opcion.menu1 LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION