{ ------------------------------------------------------------------ PROGRAMA : ADPRMT028 OBJETIVO : Capturar, Modificar registros de la Tabla de adtb000038 (CEDULAS) PROGRAMADOR : Lic. oscar castillo FECHA REALIZACION : 16 de Nov. de 1999 ------------------------------------------------------------------ } GLOBALS "adprgb000.4gl" DEFINE cedula RECORD num_emp SMALLINT, nom1_emp CHAR(20), nom2_emp CHAR(20), apell1_emp CHAR(20), apell2_emp CHAR(20), m_cedula LIKE adtb00038.cedula_n END RECORD 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 adprmt028() END MAIN FUNCTION adprmt028() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM adfmmt028 FROM "adfmmt028" DISPLAY FORM adfmmt028 DISPLAY "adprmt028" AT 4,3 ATTRIBUTE(RED) DISPLAY "Maestra de Cedulas" AT 6,33 ATTRIBUTE(BLACK) MENU ON ACTION nuevo let int_flag = false INITIALIZE emplea.* TO NULL CALL adpcad028() ON ACTION buscar let int_flag = false CALL adpcmf028() ON ACTION Salir EXIT MENU END MENU END FUNCTION FUNCTION adpcad028() # # WHENEVER ERROR CONTINUE ## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO INPUT BY NAME cedula.num_emp, cedula.m_cedula AFTER FIELD num_emp IF cedula.num_emp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_emp END IF SELECT a.num_emp FROM adtb00038 a WHERE a.num_emp = cedula.num_emp IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) CLEAR FORM NEXT FIELD num_emp END IF SELECT a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp INTO cedula.nom1_emp,cedula.nom2_emp,cedula.apell1_emp,cedula.apell2_emp FROM adtb00003 a WHERE a.num_emp = cedula.num_emp IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) CLEAR FORM NEXT FIELD num_emp END IF DISPLAY BY NAME cedula.nom1_emp,cedula.nom2_emp, cedula.apell1_emp,cedula.apell2_emp AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF ## SI NO HAY NINGUN PROBLEMA SE PROCEDE A INSERTAR EL REGISTRO INSERT INTO adtb00038 VALUES (cedula.num_emp,cedula.m_cedula) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM EXIT INPUT END INPUT END FUNCTION FUNCTION adpcmf028() ## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA ## MODIFICACION DE REGISTROS ## WHENEVER ERROR CONTINUE CONSTRUCT BY NAME criterio ON a.num_emp IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT a.num_emp,a.nom1_emp,a.nom2_emp, ", " a.apell1_emp,a.apell2_emp ", " FROM adtb00003 a ", " WHERE ", criterio clipped, " ORDER BY 1" PREPARE busca FROM selec IF bandera = 1 THEN CLEAR SCREEN RETURN END IF DECLARE dato SCROLL CURSOR FOR busca OPEN dato FETCH FIRST dato INTO cedula.* 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 a.cedula_n INTO cedula.m_cedula FROM adtb00038 a WHERE a.num_emp = cedula.num_emp IF STATUS = NOTFOUND THEN LET cedula.m_cedula = NULL END IF DISPLAY BY NAME cedula.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT dato INTO cedula.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT a.cedula_n INTO cedula.m_cedula FROM adtb00038 a WHERE a.num_emp = cedula.num_emp IF STATUS = NOTFOUND THEN LET cedula.m_cedula = NULL END IF DISPLAY BY NAME cedula.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS dato INTO cedula.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT a.cedula_n INTO cedula.m_cedula FROM adtb00038 a WHERE a.num_emp = cedula.num_emp IF STATUS = NOTFOUND THEN LET cedula.m_cedula = NULL END IF DISPLAY BY NAME cedula.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST dato INTO cedula.* SELECT a.cedula_n INTO cedula.m_cedula FROM adtb00038 a WHERE a.num_emp = cedula.num_emp IF STATUS = NOTFOUND THEN LET cedula.m_cedula = NULL END IF DISPLAY BY NAME cedula.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST dato INTO cedula.* SELECT a.cedula_n INTO cedula.m_cedula FROM adtb00038 a WHERE a.num_emp = cedula.num_emp IF STATUS = NOTFOUND THEN LET cedula.m_cedula = NULL END IF DISPLAY BY NAME cedula.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF depto.status_t = "E" THEN LET numero_msg = 39 CALL msg(numero_msg) RETURN END IF ## SE SELECCIONAN LOS CAMPOS QUE SON MODIFICABLES INPUT BY NAME cedula.m_cedula WITHOUT DEFAULTS #### 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 ## AQUI SE ACTUALIZA EL REGISTRO UPDATE adtb00038 SET cedula_n = cedula.m_cedula WHERE @num_emp = cedula.num_emp LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT { ## AQUI SE ELIMINAN LOS REGISTROS COMMAND KEY ("L") "eLiminar" UPDATE adtb00001 SET status_t = "E" WHERE departamento = depto.departamento LET numero_msg = 39 CALL msg(numero_msg) } COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION