Files
MBS/PROYECTO/vedir/veprmt010.4gl
T

267 lines
7.5 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : VEPRMT010
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Control de Presupuesto.
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Enero 13, 1992.
------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
FUNCTION veprmt010()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM vefmmt010 FROM "vefmmt010"
DISPLAY FORM vefmmt010
CALL pantalla()
DISPLAY "veprmt010" AT 4,3
DISPLAY "Control del Presupuesto" AT 6,28
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Delete> Cancela Operacion"
let int_flag = false
CLEAR FORM
CALL vepcad010()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Delete> Cancela Operacion"
let int_flag = false
CALL vepcmf010()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION vepcad010()
# WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
INPUT BY NAME controles.*
## Verifica que el codigo no exista en el catalogo de unidades. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD anos
IF controles.anos IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD controles.anos
ELSE
SELECT * INTO controles.* FROM vetb00018
WHERE anos = controles.anos
IF status >= 0 THEN
IF status != NOTFOUND THEN
IF medidas.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD anos
END IF
DISPLAY BY NAME controles.*
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD anos
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
END IF
END IF
AFTER FIELD fecha_in
IF controles.fecha_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_in
END IF
AFTER FIELD fecha_fi
IF controles.fecha_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_fi
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF controles.fecha_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_fi
ELSE
INSERT INTO vetb00018 VALUES (controles.anos,controles.fecha_in,
controles.fecha_fi,null, USER, CURRENT, null, null)
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
LET controles.anos = NULL
LET controles.fecha_in = NULL
LET controles.fecha_fi = NULL
NEXT FIELD anos
END IF
AFTER FIELD fech_mod
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION vepcmf010()
## Aqui se prepara para la captura del criterio de seleccion
# WHENEVER ERROR CONTINUE
CONSTRUCT criterio ON vetb00018.* FROM vetb00018.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE * FROM vetb00018 where ",
" status_t is null and ",
criterio clipped,
" ORDER BY 1"
PREPARE busca FROM selec
CALL integridad()
if bandera = 1 THEN
CLEAR SCREEN
RETURN
end if
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO controles.*
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
CLEAR SCREEN
RETURN
end if
end if
DISPLAY BY NAME controles.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO controles.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME controles.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO controles.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME controles.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO controles.*
DISPLAY BY NAME controles.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO controles.*
DISPLAY BY NAME controles.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
IF controles.status_t = "E" THEN
LET numero_msg = 39
CALL msg(numero_msg)
RETURN
END IF
INPUT BY NAME controles.fecha_in,
controles.fecha_fi,
controles.us_crea,
controles.fech_crea,
controles.us_mod,
controles.fech_mod WITHOUT DEFAULTS
AFTER FIELD fecha_fi
IF controles.fecha_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_fi
END IF
#### Verifica si el usuario presiono la tecla <Delete>
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
CALL integridad()
if bandera = 1 THEN
CLEAR SCREEN
RETURN
end if
UPDATE vetb00018 SET fecha_in = controles.fecha_in,
fecha_fi = controles.fecha_fi,
us_mod = USER,
fech_mod = CURRENT
WHERE anos = controles.anos
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE vetb00018 SET status_t = "E"
WHERE anos = controles.anos
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION