{ ------------------------------------------------------------------ PROGRAMA : ADPRMT032 OBJETIVO : Capturar, Modificar registros de la Tabla de adtb00045 (Control de entrada y salida de empleados) PROGRAMADOR : Lic. oscar castillo FECHA REALIZACION : Thursday, 15 August, 2002 ------------------------------------------------------------------ } GLOBALS "adprgb000.4gl" DEFINE entrada RECORD fecha date, h_trans LIKE adtb00045.h_trans, num_emp SMALLINT, nom_emp CHAR(60) END RECORD, empleado CHAR(60) FUNCTION adprmt032() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM adfmmt028 FROM "adfmmt028" DISPLAY FORM adfmmt028 CALL pantalla() DISPLAY "adprmt032" AT 4,3 ATTRIBUTE(RED) DISPLAY "Maestra de entrada y Salida Empleados" AT 6,33 ATTRIBUTE(BLACK) MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" let int_flag = false CLEAR FORM CALL adpcad032() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" let int_flag = false CALL adpcmf032() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION adpcad032() # WHENEVER ERROR CONTINUE ## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO INPUT BY NAME entrada.num_emp AFTER FIELD num_emp IF entrada.num_emp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_emp END IF SELECT a.num_emp FROM adtb00003 a WHERE a.num_emp = entrada.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 m_nom1_emp,m_nom2_emp,m_apell1_emp,m_apell2_emp FROM adtb00003 a WHERE a.num_emp = entrada.num_emp IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) CLEAR FORM NEXT FIELD num_emp END IF LET entrada.nom_emp = m_nom1_emp clipped," ",m_nom2_emp clipped," ", m_apell1_emp clipped," ",m_apell2_emp clipped DISPLAY BY NAME entrada.nom_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 SELECT a.departamento,a.nivel_emp,a.cod_puesto INTO entra_depto,entra_nivel,entra.puesto FROM adtb00003 a WHERE a.num_emp = entrada.num_emp AND a.status_t IS NULL IF (primera vez) THEN | A grammatical error has been found near "vez". | The construct is not understandable in its context. | See error number -2018. INSERT INTO adtb00023 VALUES (entrada.fecha,entrada.num_emp,entra.depto, entra.nivel,entra.puesto,entrada.h_trans,null, null,user,current,null,null) INSERT INTO adtb00045 VALUES (entrada.fecha,entrada.h_trans, entrada.num_emp,entrada.nom_emb) ELSE | A grammatical error has been found near "ELSE". | The construct is not understandable in its context. | See error number -2018. INSERT INTO adtb00023 VALUES (entrada.fecha,entrada.num_emp,entra.depto, entra.nivel,entra.puesto,null,entrada.h_trans, null,user,current,null,null) INSERT INTO adtb00045 VALUES (entrada.fecha,entrada.h_trans, entrada.num_emp,entrada.nom_emb) END IF | A grammatical error has been found near "IF". | The construct is not understandable in its context. | See error number -2018. LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM EXIT INPUT END INPUT | A grammatical error has been found near "INPUT". | The construct is not understandable in its context. | See error number -2018. END FUNCTION FUNCTION adpcmf032() ## 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.* ", " FROM adtb00045 a ", " WHERE ", criterio clipped, " ORDER BY 1" PREPARE busca FROM selec CALL integridad() IF bandera = 1 THEN CLEAR SCREEN RETURN END IF DECLARE dato SCROLL CURSOR FOR busca OPEN dato FETCH FIRST dato INTO entrada.* IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF ELSE CALL integridad() IF bandera = 1 THEN CLEAR SCREEN RETURN END IF END IF DISPLAY BY NAME entrada.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT dato INTO entrada.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME entrada.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS dato INTO entrada.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME entrada.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST dato INTO entrada.* DISPLAY BY NAME entrada.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST dato INTO entrada.* DISPLAY BY NAME entrada.* 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 entrada.m_entrada 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 CALL integridad() IF bandera = 1 THEN CLEAR SCREEN RETURN END IF ## AQUI SE ACTUALIZA EL REGISTRO UPDATE adtb00038 SET entrada_n = entrada.m_entrada WHERE @num_emp = entrada.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