{ ------------------------------------------------------------------ PROGRAMA : VEPRMT009 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de ciudadess. PROGRAMADOR : JUAN SOTO FECHA REALIZACION : OCTUBRE, 14, 2013 ------------------------------------------------------------------ } 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 veprmt013() END MAIN FUNCTION veprmt013() # WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, HELP FILE "vepray000.exe", HELP KEY CONTROL-W, COMMENT LINE 21 OPEN FORM vefmmt013 FROM "vefmmt009" DISPLAY FORM vefmmt013 MENU ON ACTION nuevo LET int_flag = FALSE CLEAR FORM CALL vepcad013() ON ACTION buscar LET int_flag = FALSE CALL vepcmf013() ON ACTION salir EXIT MENU END MENU END FUNCTION FUNCTION vepcad013() ## Captura los datos que va a contener el registro # WHENEVER ERROR CONTINUE LET int_flag = false INPUT BY NAME ciudades.* BEFORE INPUT NEXT FIELD descripcion ## Verifica que el codigo no exista en el catalogo de ciudades. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD descripcion IF ciudades.descripcion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descripcion 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 # Valida que el codigo de la ciudades 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. SELECT MAX(a.id_ciudad) INTO ciudades.id_ciudad FROM vetb00016 a WHERE a.id_ciudad < 1000 IF ciudades.id_ciudad IS NULL THEN LET ciudades.id_ciudad = 0 END IF LET ciudades.id_ciudad = ciudades.id_ciudad +1 DISPLAY BY NAME ciudades.id_ciudad INSERT INTO vetb00016(id_ciudad,descripcion,status_t, us_crea,fech_crea) VALUES (ciudades.id_ciudad, ciudades.descripcion, null,SUSER_SNAME(), GETDATE()) # 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. LET numero_msg = 1 CALL msg(numero_msg) NEXT FIELD id_ciudad EXIT INPUT END INPUT END FUNCTION FUNCTION vepcmf013() # WHENEVER ERROR CONTINUE MESSAGE "" LET int_flag = false ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON vetb00016.* FROM vetb00016.* 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 vetb00016 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 ciudades.* 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 ciudades.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO ciudades.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME ciudades.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO ciudades.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME ciudades.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO ciudades.* DISPLAY BY NAME ciudades.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO ciudades.* DISPLAY BY NAME ciudades.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF ciudades.status_t= "E" THEN LET numero_msg= 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME ciudades.descripcion, ciudades.us_crea, ciudades.fech_crea, ciudades.us_mod, ciudades.fech_mod WITHOUT DEFAULTS AFTER FIELD descripcion IF ciudades.descripcion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descripcion 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 ciudades.descripcion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descripcion 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 vetb00016 SET descripcion = ciudades.descripcion, us_mod = SUSER_SNAME(), fech_mod = GETDATE() WHERE id_ciudad = ciudades.id_ciudad LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" "Elimina registro que esta en la pantalla" UPDATE vetb00016 SET status_t ="E" WHERE id_ciudad = ciudades.id_ciudad LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CALL ayuda() EXIT MENU END MENU END FUNCTION