{ ---------------------------------------------------------------------------- PROGRAMA : ADPRMT022 OBJETIVO : Modificar y Eliminar registros de la Tabla de Maestra de Empleados PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Noviembre 19, 1993 ---------------------------------------------------------------------------- } GLOBALS "adprgb000.4gl" DEFINE tipo_sexo CHAR(9) DEFINE p_sexo CHAR(1) FUNCTION adprmt022() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 24, COMMENT LINE 23 OPEN FORM adfmmt022 FROM "adfmmt022" DISPLAY FORM adfmmt022 CALL pantalla() DISPLAY "adprmt022" AT 4,3 ATTRIBUTE(RED) DISPLAY "Maestra de Empleados" AT 6,33 ATTRIBUTE(BLACK) MENU "OPCIONES" COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" let int_flag = false CALL adpcmf022() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION adpcmf022() ## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA CONSULTA Y ## MODIFICACION DE REGISTROS DEFINE ant RECORD num_emp SMALLINT, departamento SMALLINT, nivel_emp SMALLINT, cod_puesto SMALLINT END RECORD # WHENEVER ERROR CONTINUE CONSTRUCT criterio ON a.num_emp,a.departamento FROM num_emp,departamento IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = "SELECT UNIQUE a.* FROM adtb00003 a ", "WHERE (a.status_t is null OR a.status_t NOT IN('T','E')) AND ", criterio clipped," ORDER BY a.num_emp " PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO emplea.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL selecta1() MENU "OPCION" COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO emplea.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF LET tipo_sexo = " " CALL selecta1() COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO emplea.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF LET tipo_sexo = " " CALL selecta1() COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO emplea.* CALL selecta1() LET tipo_sexo = " " LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO emplea.* CALL selecta1() LET tipo_sexo = " " LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" ## SE SELECCIONAN LOS CAMPOS QUE PUEDEN SER MODIFICABLES INPUT BY NAME emplea.departamento,emplea.nivel_emp,emplea.cod_puesto, emplea.calle,emplea.casa_num,emplea.barrio, emplea.urbanizacion,emplea.cedula,emplea.serie, emplea.telefono,emplea.fech_nac,emplea.cod_nac, emplea.estado_civil,emplea.tipo_sangre,emplea.sueldo_ac, emplea.nomina,emplea.paga_seg,emplea.cod_seg1, emplea.cod_seg2,emplea.cod_seg3,p_sexo WITHOUT DEFAULTS ## VERIFICA QUE LOS CAMPOS MODIFICABLES NO ESTEN EN BLANCO AFTER FIELD departamento IF emplea.departamento IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD departamento END IF SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001 WHERE departamento = emplea.departamento DISPLAY BY NAME depto.nom_dpto AFTER FIELD cod_puesto IF emplea.cod_puesto IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_puesto END IF SELECT @nom_puesto INTO puesto.nom_puesto FROM adtb00004 WHERE @cod_puesto = emplea.cod_puesto DISPLAY BY NAME puesto.nom_puesto AFTER FIELD nivel_emp IF emplea.nivel_emp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nivel_emp END IF AFTER FIELD estado_civil IF emplea.estado_civil IS NOT NULL THEN IF emplea.estado_civil = "S" THEN LET descr = "SOLTERO" END IF IF emplea.estado_civil = "C" THEN LET descr = "CASADO" END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD estado_civil END IF DISPLAY BY NAME descr AFTER FIELD sueldo_ac IF emplea.sueldo_ac IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sueldo_ac END IF AFTER FIELD fech_nac IF emplea.fech_nac IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_nac END IF IF YEAR(emplea.fech_nac) >= YEAR(today) THEN ERROR "FECHA INCORRECTA" NEXT FIELD fech_nac END IF AFTER FIELD nomina IF emplea.nomina IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nomina END IF IF emplea.nomina = "Q" THEN LET descrip = "QUINCENAL" END IF IF emplea.nomina = "S" THEN LET descrip = "SEMANAL" END IF IF emplea.nomina = "V" THEN LET descrip = "VENDEDOR" END IF DISPLAY BY NAME descrip AFTER FIELD p_sexo IF p_sexo IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_sexo END IF IF p_sexo = "M" THEN LET tipo_sexo = "MASCULINO" ELSE IF p_sexo = "F" THEN LET tipo_sexo = "FEMENINO" END IF END IF DISPLAY BY NAME tipo_sexo #### 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 END INPUT ## AQUI SE ACTUALIZA EL REGISTRO UPDATE adtb00003 SET (departamento,cod_puesto,nivel_emp,nom1_emp,nom2_emp, apell1_emp,apell2_emp,calle,casa_num,barrio, urbanizacion,telefono,cedula,serie,cod_nac,estado_civil, tipo_sangre,sueldo_ac,nomina,paga_seg, us_mod,fech_mod)= (emplea.departamento,emplea.cod_puesto,emplea.nivel_emp, emplea.nom1_emp,emplea.nom2_emp,emplea.apell1_emp, emplea.apell2_emp,emplea.calle,emplea.casa_num, emplea.barrio,emplea.urbanizacion,emplea.telefono, emplea.cedula,emplea.serie,emplea.cod_nac, emplea.estado_civil,emplea.tipo_sangre,emplea.sueldo_ac, emplea.nomina,emplea.paga_seg,USER,CURRENT) WHERE @num_emp = emplea.num_emp UPDATE adtb00021 SET sexo = p_sexo WHERE num_emp = emplea.num_emp AND cod_par = 0 AND sec_par = 0 LET numero_msg = 13 CALL msg(numero_msg) IF status < 0 THEN CALL integridad() END IF ## AQUI SE ELIMINAN LOS REGISTROS COMMAND KEY ("L") "eLiminar" UPDATE adtb00003 SET status_t = "E" WHERE num_emp = emplea.num_emp LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION FUNCTION selecta1() SELECT a.sexo INTO p_sexo FROM adtb00021 a WHERE a.num_emp = emplea.num_emp AND a.cod_par = 0 AND a.sec_par = 0 LET descrip1 = emplea.nom1_emp CLIPPED," ",emplea.nom2_emp CLIPPED," ", emplea.apell1_emp CLIPPED," ",emplea.apell2_emp CLIPPED SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001 WHERE departamento = emplea.departamento SELECT @nom_puesto INTO puesto.nom_puesto FROM adtb00004 WHERE @cod_puesto = emplea.cod_puesto IF emplea.estado_civil = "S" THEN LET descr = "SOLTERO" END IF IF emplea.estado_civil = "C" THEN LET descr = "CASADO" END IF IF p_sexo = "M" THEN LET tipo_sexo = "MASCULINO" END IF IF p_sexo = "F" THEN LET tipo_sexo = "FEMENINO" END IF IF emplea.nomina = "Q" THEN LET descrip = "QUINCENAL" END IF IF emplea.nomina = "S" THEN LET descrip = "SEMANAL" END IF SELECT nom_nac INTO nacion.nom_nac FROM adtb00007 WHERE cod_nac = emplea.cod_nac DISPLAY BY NAME emplea.num_emp,emplea.departamento,emplea.nivel_emp, emplea.cod_puesto,descrip1,emplea.calle,emplea.casa_num, emplea.barrio,emplea.urbanizacion,emplea.cedula, emplea.serie,emplea.fech_nac,emplea.cod_nac, emplea.licencia,emplea.telefono,emplea.estado_civil, emplea.tipo_sangre,emplea.sueldo_ac,emplea.nomina, emplea.fech_efec,descr,descrip,nacion.nom_nac, depto.nom_dpto,puesto.nom_puesto,p_sexo,tipo_sexo, emplea.paga_seg,emplea.cod_seg1,emplea.cod_seg2, emplea.cod_seg3 END FUNCTION