{ ------------------------------------------------------------------------ PROGRAMA : ADPRMT014 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Los Estudios del Solicitante PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Junio 04, 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 adprmt014() END MAIN FUNCTION adprmt014() CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 24, COMMENT LINE 23 OPEN FORM adfmmt014 FROM "adfmmt014" DISPLAY FORM adfmmt014 DISPLAY "adprmt014" AT 4,3 ATTRIBUTE(RED) # DISPLAY "Educacion" AT 6,38 ATTRIBUTE(BLACK) DISPLAY "Education" AT 6,38 ATTRIBUTE(BLACK) MENU ON ACTION nuevo let int_flag = false INITIALIZE emplea.* TO NULL CALL adpcad014() ON ACTION buscar let int_flag = false CALL adpcmf002() ON ACTION Salir EXIT MENU END MENU END FUNCTION FUNCTION adpcad014() # WHENEVER ERROR CONTINUE ## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO LABEL vuelve: INPUT BY NAME educacion.cod_sol ## VERIFICA QUE EL REGISTRO NO ESTE DUPLICADO Y ADEMAS QUE EL SOLICITANTE ## EXISTA EN LA TABLA DE DATOS BASICOS AFTER FIELD cod_sol IF educacion.cod_sol IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sol ELSE SELECT UNIQUE cod_sol INTO educacion.cod_sol FROM adtb00015 WHERE cod_sol = educacion.cod_sol IF status >= 0 THEN IF status != NOTFOUND THEN IF educacion.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_sol END IF DISPLAY BY NAME educacion.cod_sol LET numero_msg = 12 CALL msg(numero_msg) LET educacion.cod_sol = NULL CLEAR FORM NEXT FIELD cod_sol END IF ELSE IF bandera = 1 THEN CLEAR SCREEN RETURN END IF END IF SELECT UNIQUE cod_sol INTO basico.cod_sol FROM adtb00012 WHERE cod_sol = educacion.cod_sol and status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_sol END IF SELECT nom1_sol,nom2_sol,apell1_sol,apell2_sol INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00012 WHERE cod_sol = educacion.cod_sol and status_t is null LET nombre = nombre1 clipped," ",nombre2 clipped," ",apellido1 clipped," ",apellido2 clipped DISPLAY BY NAME nombre END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF END INPUT ## INTRODUCE LA INFORMACION REFERENTE A LOS ESTUDIOS REALIZADOS FOR idx = 1 to 3 LET arr_educa[idx].nom_inst = NULL LET arr_educa[idx].calle = NULL LET arr_educa[idx].casa_num = NULL LET arr_educa[idx].barrio = NULL LET arr_educa[idx].urbanizacion = NULL LET arr_educa[idx].cod_educa = NULL LET arr_educa[idx].nom_educa = NULL LET arr_educa[idx].anos = NULL LET arr_educa[idx].ano_term = NULL DISPLAY arr_educa[idx].nom_inst to consart[idx].nom_inst DISPLAY arr_educa[idx].calle to consart[idx].calle DISPLAY arr_educa[idx].casa_num to consart[idx].casa_num DISPLAY arr_educa[idx].barrio to consart[idx].barrio DISPLAY arr_educa[idx].urbanizacion to consart[idx].urbanizacion DISPLAY arr_educa[idx].cod_educa to consart[idx].cod_educa DISPLAY arr_educa[idx].nom_educa to consart[idx].nom_educa DISPLAY arr_educa[idx].anos to consart[idx].anos DISPLAY arr_educa[idx].ano_term to consart[idx].ano_term END FOR INPUT ARRAY arr_educa FROM consart.* ## VENTANA QUE BUSCA EL NIVEL DE ESTUDIOS. ON KEY (CONTROL-W) LET curr1 = arr_curr() LET scr_l = scr_line() CASE WHEN INFIELD (cod_educa) CALL busca_educacion() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD cod_educa END IF IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_educa END IF SELECT nom_educa INTO nivel.nom_educa FROM adtb00005 WHERE cod_educa = educacion.cod_educa and status_t is null LET arr_educa[curr1].nom_educa = nivel.nom_educa LET arr_educa[curr1].cod_educa = req_per.cod_educa DISPLAY arr_educa[curr1].cod_educa to consart[scr_l].cod_educa DISPLAY arr_educa[curr1].nom_educa to consart[scr_l].nom_educa END CASE BEFORE ROW LET curr1= arr_curr() LET scr_l = scr_line() ## VERIFICA QUE EL NIVEL DE EDUCACION EXISTA EN EL CATALOGO DE EDUCACION AFTER FIELD cod_educa IF arr_educa[curr1].cod_educa IS NOT NULL THEN SELECT @nom_educa INTO nivel.nom_educa FROM adtb00005 WHERE @cod_educa = arr_educa[curr1].cod_educa IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_educa END IF LET arr_educa[curr1].nom_educa = nivel.nom_educa DISPLAY arr_educa[curr1].nom_educa to consart[scr_l].nom_educa END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF EXIT INPUT END INPUT ## SI NO OCURRE NINGUN ERROR DURANTE EL PROCESO SE PROCEDE A ADICIONAR ## EL REGISTRO FOR idx = 1 to arr_count() IF arr_educa[idx].nom_inst is not null or arr_educa[idx].nom_inst is null THEN INSERT INTO adtb00015 VALUES (educacion.cod_sol,arr_educa[idx].nom_inst, arr_educa[idx].calle,arr_educa[idx].casa_num, arr_educa[idx].barrio,arr_educa[idx].urbanizacion, arr_educa[idx].cod_educa,arr_educa[idx].anos, arr_educa[idx].ano_term,null,SUSER_SNAME (),GETDATE (),null,null) END IF END FOR LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM IF status < 0 THEN CLEAR FORM END IF GOTO vuelve END FUNCTION FUNCTION adpcmf014() ## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA ## MODIFICACION DE REGISTROS DEFINE usuarios RECORD us_crea CHAR(9), fech_crea LIKE adtb00015.fech_crea END RECORD # WHENEVER ERROR CONTINUE CONSTRUCT criterio ON cod_sol FROM cod_sol IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE cod_sol FROM adtb00015 where ", " status_t is null and ", criterio clipped, " ORDER BY 1" PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO educacion.* IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF END IF SELECT nom1_sol,nom2_sol,apell1_sol,apell2_sol INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00012 WHERE cod_sol = educacion.cod_sol LET nombre = nombre1 clipped," ",nombre2 clipped," ",apellido1 clipped," ",apellido2 clipped DISPLAY BY NAME educacion.cod_sol,nombre MENU "OPCION" COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO educacion.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT nom1_sol,nom2_sol,apell1_sol,apell2_sol INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00012 WHERE cod_sol = educacion.cod_sol LET nombre = nombre1 clipped," ",nombre2 clipped," ",apellido1 clipped," ",apellido2 clipped DISPLAY BY NAME educacion.cod_sol,nombre COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO educacion.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT nom1_sol,nom2_sol,apell1_sol,apell2_sol INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00012 WHERE cod_sol = educacion.cod_sol LET nombre = nombre1 clipped," ",nombre2 clipped," ",apellido1 clipped," ",apellido2 clipped DISPLAY BY NAME educacion.cod_sol,nombre COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO educacion.* SELECT nom1_sol,nom2_sol,apell1_sol,apell2_sol INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00012 WHERE cod_sol = educacion.cod_sol LET nombre = nombre1 clipped," ",nombre2 clipped," ",apellido1 clipped," ",apellido2 clipped DISPLAY BY NAME educacion.cod_sol,nombre LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO educacion.* SELECT nom1_sol,nom2_sol,apell1_sol,apell2_sol INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00012 WHERE cod_sol = educacion.cod_sol LET nombre = nombre1 clipped," ",nombre2 clipped," ",apellido1 clipped," ",apellido2 clipped DISPLAY BY NAME educacion.cod_sol,nombre LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" ## AQUI SE MODIFICAN LOS CAMPOS DEL ARREGLO FOR idx = 1 to 3 LET arr_educa[idx].nom_inst = NULL LET arr_educa[idx].calle = NULL LET arr_educa[idx].casa_num = NULL LET arr_educa[idx].barrio = NULL LET arr_educa[idx].urbanizacion = NULL LET arr_educa[idx].cod_educa = NULL LET arr_educa[idx].nom_educa = NULL LET arr_educa[idx].anos = NULL LET arr_educa[idx].ano_term = NULL DISPLAY arr_educa[idx].nom_inst to consart[idx].nom_inst DISPLAY arr_educa[idx].calle to consart[idx].calle DISPLAY arr_educa[idx].barrio to consart[idx].barrio DISPLAY arr_educa[idx].urbanizacion to consart[idx].urbanizacion DISPLAY arr_educa[idx].cod_educa to consart[idx].cod_educa DISPLAY arr_educa[idx].nom_educa to consart[idx].nom_educa DISPLAY arr_educa[idx].anos to consart[idx].anos DISPLAY arr_educa[idx].ano_term to consart[idx].ano_term END FOR ## SE SELECCIONAN LOS CAMPOS DEL ARREGLO DECLARE buscando CURSOR FOR SELECT a.nom_inst,a.calle,a.casa_num,a.barrio, a.urbanizacion,a.cod_educa,c.nom_educa,a.anos,a.ano_term FROM adtb00015 a,adtb00012 b,adtb00005 c WHERE a.cod_sol = b.cod_sol and a.cod_sol = educacion.cod_sol and a.cod_educa = c.cod_educa and a.status_t is null LET idx = 1 FOREACH buscando INTO arr_educa[idx].* IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) EXIT FOREACH END IF LET idx = idx + 1 END FOREACH CALL set_count(idx - 1) INPUT ARRAY arr_educa WITHOUT DEFAULTS FROM consart.* ## VENTANA QUE BUSCA EL NIVEL DE ESTUDIOS. ON KEY (CONTROL-W) LET curr1 = arr_curr() LET scr_l = scr_line() CASE WHEN INFIELD (cod_educa) CALL busca_educacion() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD cod_educa END IF IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_educa END IF SELECT nom_educa INTO nivel.nom_educa FROM adtb00005 WHERE cod_educa = educacion.cod_educa and status_t is null LET arr_educa[curr1].nom_educa = nivel.nom_educa LET arr_educa[curr1].cod_educa = req_per.cod_educa DISPLAY arr_educa[curr1].cod_educa to consart[scr_l].cod_educa DISPLAY arr_educa[curr1].nom_educa to consart[scr_l].nom_educa END CASE BEFORE ROW LET curr1 = arr_curr() LET scr_l = scr_line() ## VERIFICA QUE EL NIVEL DE EDUCACION EXISTA EN EL CATALOGO DE EDUCACION AFTER FIELD cod_educa IF arr_educa[curr1].cod_educa IS NOT NULL THEN SELECT @nom_educa INTO nivel.nom_educa FROM adtb00005 WHERE @cod_educa = arr_educa[curr1].cod_educa IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_educa END IF LET arr_educa[curr1].nom_educa = nivel.nom_educa DISPLAY arr_educa[curr1].nom_educa to consart[scr_l].nom_educa END IF AFTER INPUT IF status < 0 THEN IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF EXIT INPUT END INPUT ## AQUI SE ACTUALIZAN LOS REGISTROS DELETE FROM adtb00015 WHERE cod_sol = educacion.cod_sol FOR idx = 1 to arr_count() IF arr_educa[idx].nom_inst is not null or arr_educa[idx].nom_inst is null THEN INSERT INTO adtb00015 VALUES (educacion.cod_sol,arr_educa[idx].nom_inst, arr_educa[idx].calle,arr_educa[idx].casa_num, arr_educa[idx].barrio,arr_educa[idx].urbanizacion, arr_educa[idx].cod_educa,arr_educa[idx].anos, arr_educa[idx].ano_term,null,SUSER_SNAME (),GETDATE (),null,null) END IF END FOR LET numero_msg = 13 CALL msg(numero_msg) IF status < 0 THEN END IF ## AQUI SE ELIMINAN LOS REGISTROS COMMAND KEY ("L") "eLiminar" UPDATE adtb00015 SET status_t = "E" WHERE cod_sol = educacion.cod_sol LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM FOR idx = 1 to 3 LET arr_educa[idx].nom_inst = NULL LET arr_educa[idx].calle = NULL LET arr_educa[idx].casa_num = NULL LET arr_educa[idx].barrio = NULL LET arr_educa[idx].urbanizacion = NULL LET arr_educa[idx].cod_educa = NULL LET arr_educa[idx].nom_educa = NULL LET arr_educa[idx].anos = NULL LET arr_educa[idx].ano_term = NULL DISPLAY arr_educa[idx].nom_inst to consart[idx].nom_inst DISPLAY arr_educa[idx].calle to consart[idx].calle DISPLAY arr_educa[idx].casa_num to consart[idx].casa_num DISPLAY arr_educa[idx].barrio to consart[idx].barrio DISPLAY arr_educa[idx].urbanizacion to consart[idx].urbanizacion DISPLAY arr_educa[idx].cod_educa to consart[idx].cod_educa DISPLAY arr_educa[idx].nom_educa to consart[idx].nom_educa DISPLAY arr_educa[idx].anos to consart[idx].anos DISPLAY arr_educa[idx].ano_term to consart[idx].ano_term END FOR EXIT MENU END MENU END FUNCTION