{ ------------------------------------------------------------------ PROGRAMA : ADPRMT027 OBJETIVO : Capturar, Modificar registros de la Tabla de vACACIONES PROGRAMADOR : Lic. oscar castillo FECHA REALIZACION : 30 de Nov. de 1999 ------------------------------------------------------------------ } GLOBALS "adprgb000.4gl" DEFINE vaca RECORD ano SMALLINT, num_emp SMALLINT, cod_puesto SMALLINT, nom1_emp CHAR(20), nom2_emp CHAR(20), apell1_emp CHAR(20), apell2_emp CHAR(20), cedula CHAR(11), serie CHAR(4), nomina CHAR(1), fecha_ing DATE, nom_puesto CHAR(25), fech_vac DATE 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 adprmt027() END MAIN FUNCTION adprmt027() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM adfmmt027 FROM "adfmmt027" DISPLAY FORM adfmmt027 DISPLAY "adprmt027" AT 4,3 ATTRIBUTE(RED) DISPLAY "Maestra de Empleados" AT 6,33 ATTRIBUTE(BLACK) MENU ON ACTION nuevo let int_flag = false INITIALIZE emplea.* TO NULL CALL adpcad027() ON ACTION buscar let int_flag = false CALL adpcmf027() ON ACTION Salir EXIT MENU END MENU END FUNCTION FUNCTION adpcad027() # # WHENEVER ERROR CONTINUE ## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO INPUT BY NAME vaca.ano,vaca.num_emp, vaca.cod_puesto, vaca.fech_vac, vaca.fecha_ing AFTER FIELD cod_puesto IF vaca.cod_puesto IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_puesto END IF SELECT @nom_puesto INTO vaca.nom_puesto FROM adtb00004 WHERE @cod_puesto = vaca.cod_puesto DISPLAY BY NAME vaca.nom_puesto AFTER FIELD num_emp IF vaca.num_emp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_emp END IF SELECT a.num_emp FROM vacaciones a WHERE a.num_emp = vaca.num_emp AND a.ano = vaca.ano IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD num_emp END IF SELECT a.nom1_emp,a.cod_puesto,a.nom2_emp,a.apell1_emp,a.apell2_emp, a.cedula,a.serie,a.nomina INTO vaca.nom1_emp,vaca.cod_puesto,vaca.nom2_emp,vaca.apell1_emp,vaca.apell2_emp, vaca.cedula,vaca.serie,vaca.nomina FROM adtb00003 a WHERE a.num_emp = vaca.num_emp AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_emp END IF DISPLAY BY NAME vaca.nom1_emp,vaca.nom2_emp, vaca.apell1_emp,vaca.apell2_emp, vaca.cedula,vaca.serie, vaca.nomina 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 IF vaca.num_emp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_emp ELSE INSERT INTO vacaciones VALUES (vaca.ano,vaca.num_emp,vaca.cod_puesto, vaca.nom1_emp,vaca.nom2_emp, vaca.apell1_emp,vaca.apell2_emp, vaca.cedula,vaca.serie, vaca.nomina,vaca.fecha_ing, vaca.nom_puesto,vaca.fech_vac,null) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM END IF EXIT INPUT END INPUT END FUNCTION FUNCTION adpcmf027() DEFINE elimina CHAR(3) ## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA ## MODIFICACION DE REGISTROS ## WHENEVER ERROR CONTINUE CONSTRUCT BY NAME criterio ON a.ano,a.num_emp,a.cod_puesto, a.nom1_emp,a.nom2_emp, a.apell1_emp,a.apell2_emp, a.cedula,a.serie, a.nomina,a.fecha_ing,a.fech_vac IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT a.ano,a.num_emp,a.cod_puesto,a.nom1_emp,a.nom2_emp, ", " a.apell1_emp,a.apell2_emp, ", " a.cedula,a.serie,a.nomina,CONVERT(CHAR(10),a.fecha_ing,103), ", " a.nom_puesto,CONVERT(CHAR(10),a.fech_vac,103) ", " FROM vacaciones a ", " WHERE ", criterio clipped, " ORDER BY a.num_emp" 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 vaca.* 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 DISPLAY BY NAME vaca.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT dato INTO vaca.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME vaca.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS dato INTO vaca.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME vaca.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST dato INTO vaca.* DISPLAY BY NAME vaca.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST dato INTO vaca.* DISPLAY BY NAME vaca.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND KEY("L") "eLiminar" LET elimina = fgl_winquestion("ELIMINAR","ESTA SEGURO DE ELIMINAR EL REGISTRO?","NO","YES|NO","QUESTION",0) IF elimina = "YES" THEN DELETE FROM vacaciones WHERE ano = vaca.ano AND num_emp = vaca.num_emp CALL fgl_winmessage("WARNING","REGISTRO ELIMINADO","STOP") END IF 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 vaca.cod_puesto, vaca.fech_vac,vaca.fecha_ing WITHOUT DEFAULTS AFTER FIELD cod_puesto IF vaca.cod_puesto IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_puesto END IF SELECT @nom_puesto INTO vaca.nom_puesto FROM adtb00004 WHERE @cod_puesto = vaca.cod_puesto DISPLAY BY NAME vaca.nom_puesto #### 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 vacaciones SET cod_puesto = vaca.cod_puesto, nom_puesto = vaca.nom_puesto, fecha_ing = vaca.fecha_ing, fech_vac = vaca.fech_vac WHERE vacaciones.num_emp = vaca.num_emp AND vacaciones.ano = vaca.ano 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