{ ------------------------------------------------------------------ PROGRAMA : VEPRMT015 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Tarifas de Transporte. PROGRAMADOR : Lic. Abner Montalvo Z. FECHA REALIZACION : Febero 11, 1993. ------------------------------------------------------------------ } GLOBALS "veprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "smarmotech" USER usuarios USING clave CALL veprmt015() END MAIN FUNCTION veprmt015() # 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 vefmmt015 FROM "vefmmt015" DISPLAY FORM vefmmt015 CALL ayuda() DISPLAY "veprmt015" AT 4,3 DISPLAY "Tarifas del Transporte" AT 6,29 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" HELP 5 LET int_flag = FALSE CLEAR FORM CALL vepcad015() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" HELP 6 LET int_flag = FALSE CALL vepcmf015() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION vepcad015() ## Captura los datos que va a contener el registro # WHENEVER ERROR CONTINUE MESSAGE "" LET int_flag = false INPUT BY NAME tarifa.* ON KEY (CONTROL-W) CASE 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 LET tarifa.cod_provincia = zonap.cod_provincia DISPLAY zonap.cod_provincia TO cod_provincia DISPLAY descrip1 TO nombre_provincia NEXT FIELD tarifa_pago END IF LET int_flag = FALSE END CASE ## Verifica que el codigo no exista en la tabla de tarifa. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_tarifa IF tarifa.cod_tarifa is null or tarifa.cod_tarifa = 0 then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_tarifa ELSE SELECT * INTO tarifa.* FROM vetb00023 WHERE cod_tarifa = tarifa.cod_tarifa IF status >= 0 THEN IF status != NOTFOUND THEN IF tarifa.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_tarifa END IF DISPLAY BY NAME tarifa.* LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_tarifa ELSE LET descrip1 = NULL DISPLAY descrip1 TO nombre_provincia INITIALIZE tarifa.descrip, tarifa.cod_provincia, tarifa.tarifa_pago, tarifa.status_t, tarifa.us_crea, tarifa.fech_crea, tarifa.us_mod, tarifa.fech_mod TO NULL DISPLAY BY NAME tarifa.descrip, tarifa.cod_provincia, tarifa.tarifa_pago, tarifa.status_t, tarifa.us_crea, tarifa.fech_crea, tarifa.us_mod, tarifa.fech_mod END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF AFTER FIELD descrip IF tarifa.descrip IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip END IF AFTER FIELD cod_provincia IF tarifa.cod_provincia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = tarifa.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 END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF AFTER FIELD tarifa_pago IF tarifa.tarifa_pago IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tarifa_pago 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 que el codigo no exista en la tabla de tarifa. Si existe, ## entonces despliega los datos del registro existente. IF tarifa.cod_tarifa is null or tarifa.cod_tarifa = 0 then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_tarifa ELSE SELECT * INTO tarifa.* FROM vetb00023 WHERE cod_tarifa = tarifa.cod_tarifa IF status >= 0 THEN IF status != NOTFOUND THEN IF tarifa.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_tarifa END IF DISPLAY BY NAME tarifa.* LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_tarifa END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF IF tarifa.descrip IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip END IF IF tarifa.cod_provincia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = tarifa.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 END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF IF tarifa.tarifa_pago IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tarifa_pago END IF # Valida que el codigo de la tarifa 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. INSERT INTO vetb00023 VALUES (tarifa.cod_tarifa, tarifa.descrip, tarifa.cod_provincia, tarifa.tarifa_pago, 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_tarifa AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION vepcmf015() # WHENEVER ERROR CONTINUE MESSAGE "" LET int_flag = false LET descrip1 = NULL DISPLAY descrip1 TO nombre_provincia ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON vetb00023.* FROM vetb00023.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL ayuda() RETURN END IF LET SELEC = "SELECT * FROM vetb00023 WHERE status_t is null and ", criterio clipped," ORDER BY 1" 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 tarifa.* 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 tarifa.* CALL busca_nombre_provincia() MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO tarifa.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME tarifa.* CALL busca_nombre_provincia() COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO tarifa.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME tarifa.* CALL busca_nombre_provincia() COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO tarifa.* DISPLAY BY NAME tarifa.* LET numero_msg = 5 CALL msg(numero_msg) CALL busca_nombre_provincia() COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO tarifa.* DISPLAY BY NAME tarifa.* LET numero_msg = 4 CALL msg(numero_msg) CALL busca_nombre_provincia() COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF tarifa.status_t= "E" THEN LET numero_msg= 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME tarifa.descrip, tarifa.cod_provincia, tarifa.tarifa_pago, tarifa.us_crea, tarifa.fech_crea, tarifa.us_mod, tarifa.fech_mod WITHOUT DEFAULTS ON KEY (CONTROL-W) CASE WHEN INFIELD (cod_provincia) CALL consulta_provincias() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD tarifa_pago END IF IF NOT int_flag THEN LET tarifa.cod_provincia = zonap.cod_provincia DISPLAY zonap.cod_provincia TO cod_provincia DISPLAY descrip1 TO nombre_provincia NEXT FIELD cod_provincia END IF LET int_flag = FALSE END CASE AFTER FIELD descrip IF tarifa.descrip IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip END IF AFTER FIELD cod_provincia IF tarifa.cod_provincia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = tarifa.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 END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF AFTER FIELD tarifa_pago IF tarifa.tarifa_pago IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tarifa_pago END IF AFTER 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 IF tarifa.descrip IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip END IF IF tarifa.cod_provincia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = tarifa.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 END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF IF tarifa.tarifa_pago IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tarifa_pago 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 vetb00023 SET descrip = tarifa.descrip, cod_provincia = tarifa.cod_provincia, tarifa_pago = tarifa.tarifa_pago, us_mod = SUSER_SNAME(), fech_mod = GETDATE() WHERE cod_tarifa = tarifa.cod_tarifa LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" "Elimina registro que esta en la pantalla" UPDATE vetb00023 SET status_t ="E" WHERE cod_tarifa = tarifa.cod_tarifa LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CALL ayuda() EXIT MENU END MENU END FUNCTION FUNCTION busca_nombre_provincia() # Busca del nombre de la provincia y lo desplega en la pantalla SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = tarifa.cod_provincia IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 66 CALL msg(numero_msg) RETURN END IF DISPLAY descrip1 TO nombre_provincia END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END FUNCTION