{ ------------------------------------------------------------------ PROGRAMA : VEPRMT013 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Provincias PROGRAMADOR : ING. JUAN SOTO FECHA REALIZACION : Febrero 9, 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 veprmt009() END MAIN FUNCTION veprmt009() # 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 "vefmmt013" 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 provincia.* BEFORE INPUT CALL paises() CALL cciudades() LET provincia.id_ciudad=1000 DISPLAY BY NAME provincia.id_ciudad NEXT FIELD nombre_provincia ## Verifica que el codigo no exista en el catalogo de provincia. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD nombre_provincia IF provincia.nombre_provincia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre_provincia 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 provincia 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 provincia.id_ciudad IS NULL THEN CALL msg(16) NEXT FIELD id_ciudad END IF SELECT MAX(a.cod_provincia) INTO provincia.cod_provincia FROM vetb00020 a IF provincia.cod_provincia IS NULL THEN LET provincia.cod_provincia = 0 END IF LET provincia.cod_provincia = provincia.cod_provincia +1 DISPLAY BY NAME provincia.cod_provincia INSERT INTO vetb00020(cod_provincia,nombre_provincia,status_t,us_crea,fech_crea, id_ciudad,codigo) VALUES (provincia.cod_provincia,provincia.nombre_provincia, null,SUSER_SNAME(), GETDATE(),provincia.id_ciudad,provincia.codigo) # 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 cod_provincia 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 vetb00020.cod_provincia,vetb00020.nombre_provincia FROM cod_provincia,nombre_provincia BEFORE CONSTRUCT CALL paises() AFTER CONSTRUCT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL ayuda() RETURN END IF END CONSTRUCT LET SELEC = " SELECT UNIQUE * FROM vetb00020 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 provincia.* 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 CALL busca_info() DISPLAY BY NAME provincia.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO provincia.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME provincia.* CALL busca_info() COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO provincia.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME provincia.* CALL busca_info() COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO provincia.* DISPLAY BY NAME provincia.* LET numero_msg = 5 CALL msg(numero_msg) CALL busca_info() COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO provincia.* DISPLAY BY NAME provincia.* LET numero_msg = 4 CALL msg(numero_msg) CALL busca_info() COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF provincia.status_t= "E" THEN LET numero_msg= 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME provincia.nombre_provincia, provincia.id_ciudad, provincia.us_crea, provincia.fech_crea, provincia.us_mod, provincia.fech_mod WITHOUT DEFAULTS BEFORE INPUT CALL cciudades() AFTER FIELD nombre_provincia IF provincia.nombre_provincia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre_provincia 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 provincia.nombre_provincia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre_provincia 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 vetb00020 SET nombre_provincia = provincia.nombre_provincia, id_ciudad = provincia.id_ciudad, us_mod = SUSER_SNAME(), fech_mod = GETDATE() WHERE cod_provincia = provincia.cod_provincia LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" "Elimina registro que esta en la pantalla" UPDATE vetb00020 SET status_t ="E" WHERE cod_provincia = provincia.cod_provincia LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CALL ayuda() EXIT MENU END MENU END FUNCTION FUNCTION busca_info() LET pciudad = ui.ComboBox.forName("formonly.id_ciudad") CALL cciudades() DISPLAY BY NAME provincia.id_ciudad END FUNCTION