{ ------------------------------------------------------------------ PROGRAMA : VEPRMT007 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Transportistas. PROGRAMADOR : Lic. Abner Montalvo Z. FECHA REALIZACION : Noviembre 30, 1992. ------------------------------------------------------------------ } GLOBALS "veprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "decomarmol" USER usuarios USING clave CALL veprmt007() END MAIN FUNCTION veprmt007() # WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, HELP FILE "vepray000.exe", HELP KEY CONTROL-W, MESSAGE LINE 24, COMMENT LINE 21 OPEN FORM vefmmt007 FROM "vefmmt007" DISPLAY FORM vefmmt007 CALL ayuda() DISPLAY "veprmt007" AT 4,3 DISPLAY "Transportistas" AT 6,33 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" HELP 5 LET int_flag = FALSE CLEAR FORM CALL vepcad007() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" HELP 6 LET int_flag = FALSE CALL vepcmf007() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION vepcad007() ## Captura los datos que va a contener el registro # WHENEVER ERROR CONTINUE MESSAGE "" LET int_flag = false INPUT BY NAME transportista.* ON KEY (CONTROL-W) CASE WHEN INFIELD (cod_zona) CALL consulta_zonas() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD cod_zona END IF IF NOT int_flag THEN DISPLAY zona.cod_zona TO cod_zona DISPLAY descrip1 TO descrip NEXT FIELD cod_provincia END IF LET int_flag = FALSE WHEN INFIELD (cod_provincia) CALL consulta_provincias() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF IF NOT int_flag THEN DISPLAY zonap.cod_provincia TO cod_provincia DISPLAY descrip1 TO nombre_provincia NEXT FIELD telefono END IF LET int_flag = FALSE END CASE ## Verifica que el codigo no exista en la tabla de transportista. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_transp IF transportista.cod_transp is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_transp END IF AFTER FIELD sec_transp IF transportista.sec_transp is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sec_transp ELSE SELECT * INTO transportista.* FROM vetb00015 WHERE sec_transp = transportista.sec_transp IF status >= 0 THEN IF status != NOTFOUND THEN IF transportista.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_transp END IF DISPLAY BY NAME transportista.* LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_transp ELSE INITIALIZE transportista.nombre, transportista.cedula, transportista.serie, transportista.calle, transportista.casa_num, transportista.barrio, transportista.urbanizacion, transportista.cod_zona, transportista.cod_provincia, transportista.telefono, transportista.status_t, transportista.us_crea, transportista.fech_crea, transportista.us_mod, transportista.fech_mod TO NULL DISPLAY BY NAME transportista.nombre, transportista.cedula, transportista.serie, transportista.calle, transportista.casa_num, transportista.barrio, transportista.urbanizacion, transportista.cod_zona, transportista.cod_provincia, transportista.telefono, transportista.status_t, transportista.us_crea, transportista.fech_crea, transportista.us_mod, transportista.fech_mod END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF AFTER FIELD nombre IF transportista.nombre IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre END IF AFTER FIELD cedula IF transportista.cedula IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cedula END IF AFTER FIELD serie IF transportista.serie IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD serie END IF AFTER FIELD calle IF transportista.calle IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD calle END IF AFTER FIELD casa_num IF transportista.casa_num IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD casa_num END IF { AFTER FIELD barrio IF transportista.barrio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD barrio END IF AFTER FIELD urbanizacion IF transportista.urbanizacion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD urbanizacion END IF } AFTER FIELD cod_zona IF transportista.cod_zona is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_zona ELSE SELECT descrip, status_t INTO descrip1, status_reg FROM vetb00008 WHERE cod_zona = transportista.cod_zona IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 43 CALL msg(numero_msg) NEXT FIELD cod_zona END IF DISPLAY descrip1 TO descrip ELSE LET numero_msg = 42 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF AFTER FIELD cod_provincia IF transportista.cod_provincia is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia ELSE SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = transportista.cod_provincia IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 66 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF DISPLAY descrip1 TO nombre_provincia ELSE LET numero_msg = 65 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL ayuda() RETURN END IF # Verifica si el transportista existe. Si existe, despliega los datos del mismo IF transportista.cod_transp is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_transp END IF IF transportista.sec_transp is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sec_transp ELSE SELECT * INTO transportista.* FROM vetb00015 WHERE sec_transp = transportista.sec_transp IF status >= 0 THEN IF status != NOTFOUND THEN IF transportista.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD sec_transp END IF DISPLAY BY NAME transportista.* LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD sec_transp END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF IF transportista.nombre IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre END IF IF transportista.cedula IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cedula END IF IF transportista.serie IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD serie END IF IF transportista.calle IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD calle END IF IF transportista.casa_num IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD casa_num END IF { IF transportista.barrio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD barrio END IF IF transportista.urbanizacion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD urbanizacion END IF } IF transportista.cod_zona is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_zona ELSE SELECT descrip, status_t INTO descrip1, status_reg FROM vetb00008 WHERE cod_zona = transportista.cod_zona IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 43 CALL msg(numero_msg) NEXT FIELD cod_zona END IF DISPLAY descrip1 TO descrip ELSE LET numero_msg = 42 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF IF transportista.cod_provincia is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia ELSE SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = transportista.cod_provincia IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 66 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF DISPLAY descrip1 TO nombre_provincia ELSE LET numero_msg = 65 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF # Valida que el codigo del transportista no sea cero. Si no es cero, adiciona el # registro en la tabla, de lo contrario, presenta mensaje de error y acepta # el codigo de nuevo. IF transportista.cod_transp is null OR transportista.cod_transp = 0 OR transportista.sec_transp is null OR transportista.sec_transp = 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_transp ELSE INSERT INTO vetb00015 VALUES (transportista.cod_transp, transportista.sec_transp, transportista.nombre, transportista.cedula, transportista.serie, transportista.calle, transportista.casa_num, transportista.barrio, transportista.urbanizacion, transportista.cod_zona, transportista.cod_provincia, transportista.telefono, null, SUSER_SNAME(), GETDATE(), null, null) # Verifica el Status que retorna luego de insertar el registro en la tabla. # Si el Status es diferente de cero quiere decir que hubo problemas durante # la creacion del registro, entonces despliega un mensaje . CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET numero_msg = 1 CALL msg(numero_msg) NEXT FIELD cod_transp END IF AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION vepcmf007() # WHENEVER ERROR CONTINUE MESSAGE "" LET int_flag = false ## Aqui se prepara para la captura del criterio de seleccion LET descrip1 = NULL DISPLAY descrip1 TO descrip DISPLAY descrip1 TO nombre_provincia CONSTRUCT criterio ON vetb00015.* FROM vetb00015.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL ayuda() RETURN END IF LET SELEC = "SELECT UNIQUE * FROM vetb00015 ", "WHERE status_t is null and ",criterio clipped, " ORDER BY 1,2" PREPARE busca FROM selec CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO transportista.* 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 LET bandera = 0 RETURN END IF END IF DISPLAY BY NAME transportista.* CALL busca_nombre_zona() CALL busca_provincia() MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO transportista.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME transportista.* CALL busca_nombre_zona() CALL busca_provincia() COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO transportista.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME transportista.* CALL busca_nombre_zona() CALL busca_provincia() COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO transportista.* DISPLAY BY NAME transportista.* CALL busca_nombre_zona() CALL busca_provincia() LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO transportista.* DISPLAY BY NAME transportista.* CALL busca_nombre_zona() CALL busca_provincia() LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF transportista.status_t= "E" THEN LET numero_msg= 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME transportista.nombre, transportista.cedula, transportista.serie, transportista.calle, transportista.casa_num, transportista.barrio, transportista.urbanizacion, transportista.cod_zona, transportista.cod_provincia, transportista.telefono, transportista.us_crea, transportista.fech_crea, transportista.us_mod, transportista.fech_mod WITHOUT DEFAULTS ON KEY (CONTROL-W) CASE WHEN INFIELD (cod_zona) CALL consulta_zonas() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD cod_zona END IF IF NOT int_flag THEN DISPLAY zona.cod_zona TO cod_zona DISPLAY descrip1 TO descrip NEXT FIELD cod_provincia END IF LET int_flag = FALSE WHEN INFIELD (cod_provincia) CALL consulta_provincias() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF IF NOT int_flag THEN DISPLAY zonap.cod_provincia TO cod_provincia DISPLAY descrip1 TO nombre_provincia NEXT FIELD telefono END IF LET int_flag = FALSE END CASE AFTER FIELD nombre IF transportista.nombre IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre END IF AFTER FIELD cedula IF transportista.cedula IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cedula END IF AFTER FIELD serie IF transportista.serie IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD serie END IF AFTER FIELD calle IF transportista.calle IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD calle END IF AFTER FIELD casa_num IF transportista.casa_num IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD casa_num END IF { AFTER FIELD barrio IF transportista.barrio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD barrio END IF AFTER FIELD urbanizacion IF transportista.urbanizacion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD urbanizacion END IF } AFTER FIELD cod_zona IF transportista.cod_zona is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_zona ELSE SELECT descrip, status_t INTO descrip1, status_reg FROM vetb00008 WHERE cod_zona = transportista.cod_zona IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 43 CALL msg(numero_msg) NEXT FIELD cod_zona END IF DISPLAY descrip1 TO descrip ELSE LET numero_msg = 42 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF AFTER FIELD cod_provincia IF transportista.cod_provincia is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia ELSE SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = transportista.cod_provincia IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 66 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF DISPLAY descrip1 TO nombre_provincia ELSE LET numero_msg = 65 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL ayuda() RETURN END IF IF transportista.nombre IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre END IF IF transportista.cedula IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cedula END IF IF transportista.serie IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD serie END IF IF transportista.calle IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD calle END IF IF transportista.casa_num IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD casa_num END IF { IF transportista.barrio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD barrio END IF IF transportista.urbanizacion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD urbanizacion END IF } IF transportista.cod_zona is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_zona ELSE SELECT descrip, status_t INTO descrip1, status_reg FROM vetb00008 WHERE cod_zona = transportista.cod_zona IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 43 CALL msg(numero_msg) NEXT FIELD cod_zona END IF DISPLAY descrip1 TO descrip ELSE LET numero_msg = 42 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF IF transportista.cod_provincia is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia ELSE SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = transportista.cod_provincia IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 66 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF DISPLAY descrip1 TO nombre_provincia ELSE LET numero_msg = 65 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF EXIT INPUT END INPUT #### Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL ayuda() RETURN END IF UPDATE vetb00015 SET nombre = transportista.nombre, cedula = transportista.cedula, serie = transportista.serie, calle = transportista.calle, casa_num = transportista.casa_num, barrio = transportista.barrio, urbanizacion = transportista.urbanizacion, cod_zona = transportista.cod_zona, cod_provincia = transportista.cod_provincia, telefono = transportista.telefono, us_mod = SUSER_SNAME(), fech_mod = GETDATE() WHERE cod_transp = transportista.cod_transp AND sec_transp = transportista.sec_transp LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" "Elimina registro que esta en la pantalla" UPDATE vetb00015 SET status_t ="E" WHERE cod_transp = transportista.cod_transp AND sec_transp = transportista.sec_transp LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CALL ayuda() EXIT MENU END MENU END FUNCTION