{ ------------------------------------------------------------------ PROGRAMA : ADPRMT002 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Secciones de Departamentos PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Mayo 19, 1993 ------------------------------------------------------------------ } GLOBALS "adprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor let usuarios = "kpolanco" let clave = "RevolutionX3" CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL adprmt002() END MAIN FUNCTION adprmt002() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM adfmmt002 FROM "adfmmt002" DISPLAY FORM adfmmt002 DISPLAY "adprmt002" AT 4,3 ATTRIBUTE(RED) DISPLAY "Secciones" AT 6,38 ATTRIBUTE(BLACK) MENU ON ACTION nuevo let int_flag = false INITIALIZE emplea.* TO NULL CALL adpcad002() ON ACTION buscar let int_flag = false CALL adpcmf002() ON ACTION Salir EXIT MENU END MENU END FUNCTION FUNCTION adpcad002() {WHENEVER ERROR CONTINUE} ## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO INPUT BY NAME seccion.* ## VERIFICA QUE EL CODIGO NO EXISTA EN EL CATALOGO DE SECCIONES. SI EXISTE, ## ENTONCES DESPLIEGA LOS DATOS DEL REGISTRO EXISTENTE. AFTER FIELD cod_seccion IF seccion.cod_seccion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_seccion END IF AFTER FIELD departamento IF seccion.departamento IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD departamento ELSE SELECT * INTO seccion.* FROM adtb00002 WHERE cod_seccion = seccion.cod_seccion and departamento = seccion.departamento IF status >= 0 THEN IF status != NOTFOUND THEN IF seccion.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_seccion END IF DISPLAY BY NAME seccion.* LET numero_msg = 12 CALL msg(numero_msg) LET seccion.nom_seccion = NULL NEXT FIELD cod_seccion END IF ELSE IF bandera = 1 THEN CLEAR SCREEN RETURN END IF END IF SELECT departamento FROM adtb00001 WHERE departamento = seccion.departamento and status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD departamento END IF SELECT nom_dpto INTO nombre FROM adtb00001 WHERE departamento = seccion.departamento and status_t is null DISPLAY BY NAME nombre END IF AFTER FIELD nom_seccion IF seccion.nom_seccion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nom_seccion END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF seccion.departamento IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD departamento END IF IF seccion.nom_seccion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nom_seccion ELSE INSERT INTO adtb00002 VALUES (seccion.cod_seccion, seccion.departamento,seccion.nom_seccion,null, suser_sname (),GETDATE(), null, null) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM LET seccion.cod_seccion = NULL LET seccion.departamento = NULL LET seccion.nom_seccion = NULL NEXT FIELD cod_seccion END IF AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION adpcmf002() ## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA ## MODIFICACION DE REGISTROS {WHENEVER ERROR CONTINUE} CONSTRUCT criterio ON adtb00002.* FROM adtb00002.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE * FROM adtb00002 where ", " status_t is null and ", criterio clipped, " ORDER BY 1,2" PREPARE busca FROM selec IF bandera = 1 THEN CLEAR SCREEN RETURN END IF DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO seccion.* IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF ELSE IF bandera = 1 THEN CLEAR SCREEN RETURN END IF END IF SELECT nom_dpto INTO nombre FROM adtb00001 WHERE departamento = seccion.departamento and status_t is null DISPLAY BY NAME seccion.*,nombre MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO seccion.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT nom_dpto INTO nombre FROM adtb00001 WHERE departamento = seccion.departamento DISPLAY BY NAME seccion.*,nombre COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO seccion.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT nom_dpto INTO nombre FROM adtb00001 WHERE departamento = seccion.departamento DISPLAY BY NAME seccion.*,nombre COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO seccion.* SELECT nom_dpto INTO nombre FROM adtb00001 WHERE departamento = seccion.departamento DISPLAY BY NAME seccion.*,nombre LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO seccion.* SELECT nom_dpto INTO nombre FROM adtb00001 WHERE departamento = seccion.departamento DISPLAY BY NAME seccion.*,nombre LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF seccion.status_t = "E" THEN LET numero_msg = 39 CALL msg(numero_msg) RETURN END IF SELECT nom_dpto INTO nombre FROM adtb00001 WHERE departamento = seccion. departamento and status_t is null INPUT BY NAME seccion.nom_seccion, seccion.us_crea, seccion.fech_crea, seccion.us_mod, seccion.fech_mod WITHOUT DEFAULTS AFTER FIELD nom_seccion IF seccion.nom_seccion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nom_seccion 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 IF bandera = 1 THEN CLEAR SCREEN RETURN END IF UPDATE adtb00002 SET nom_seccion = seccion.nom_seccion, us_mod = SUSER_SNAME (), fech_mod = GETDATE () WHERE cod_seccion = seccion.cod_seccion and departamento = seccion.departamento LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE adtb00002 SET status_t = "E" WHERE cod_seccion = seccion.cod_seccion and departamento = seccion.departamento LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION