Files
MBS/PROYECTO/addir/adprmt002.4gl
T

329 lines
9.5 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : ADPRMT002
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Secciones de Departamentos
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Mayo 19, 1993
------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
let usuarios = "kpolanco"
let clave = "RevolutionX3"
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL adprmt002()
END MAIN
FUNCTION adprmt002()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM adfmmt002 FROM "adfmmt002"
DISPLAY FORM adfmmt002
DISPLAY "adprmt002" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Secciones" AT 6,38 ATTRIBUTE(BLACK)
MENU
ON ACTION nuevo
let int_flag = false
INITIALIZE emplea.* TO NULL
CALL adpcad002()
ON ACTION buscar
let int_flag = false
CALL adpcmf002()
ON ACTION Salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION adpcad002()
{WHENEVER ERROR CONTINUE}
## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO
INPUT BY NAME seccion.*
## VERIFICA QUE EL CODIGO NO EXISTA EN EL CATALOGO DE SECCIONES. SI EXISTE,
## ENTONCES DESPLIEGA LOS DATOS DEL REGISTRO EXISTENTE.
AFTER FIELD cod_seccion
IF seccion.cod_seccion IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_seccion
END IF
AFTER FIELD departamento
IF seccion.departamento IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD departamento
ELSE
SELECT * INTO seccion.* FROM adtb00002
WHERE cod_seccion = seccion.cod_seccion and
departamento = seccion.departamento
IF status >= 0 THEN
IF status != NOTFOUND THEN
IF seccion.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD cod_seccion
END IF
DISPLAY BY NAME seccion.*
LET numero_msg = 12
CALL msg(numero_msg)
LET seccion.nom_seccion = NULL
NEXT FIELD cod_seccion
END IF
ELSE
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
END IF
SELECT departamento FROM adtb00001
WHERE departamento = seccion.departamento and
status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD departamento
END IF
SELECT nom_dpto INTO nombre FROM adtb00001
WHERE departamento = seccion.departamento and
status_t is null
DISPLAY BY NAME nombre
END IF
AFTER FIELD nom_seccion
IF seccion.nom_seccion IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_seccion
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF seccion.departamento IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD departamento
END IF
IF seccion.nom_seccion IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_seccion
ELSE
INSERT INTO adtb00002 VALUES (seccion.cod_seccion,
seccion.departamento,seccion.nom_seccion,null,
suser_sname (),GETDATE(), null, null)
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
LET seccion.cod_seccion = NULL
LET seccion.departamento = NULL
LET seccion.nom_seccion = NULL
NEXT FIELD cod_seccion
END IF
AFTER FIELD fech_mod
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION adpcmf002()
## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA
## MODIFICACION DE REGISTROS
{WHENEVER ERROR CONTINUE}
CONSTRUCT criterio ON adtb00002.* FROM adtb00002.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE * FROM adtb00002 where ",
" status_t is null and ",
criterio clipped,
" ORDER BY 1,2"
PREPARE busca FROM selec
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO seccion.*
IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
ELSE
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
END IF
SELECT nom_dpto INTO nombre FROM adtb00001
WHERE departamento = seccion.departamento and
status_t is null
DISPLAY BY NAME seccion.*,nombre
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO seccion.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
SELECT nom_dpto INTO nombre FROM adtb00001
WHERE departamento = seccion.departamento
DISPLAY BY NAME seccion.*,nombre
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO seccion.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
SELECT nom_dpto INTO nombre FROM adtb00001
WHERE departamento = seccion.departamento
DISPLAY BY NAME seccion.*,nombre
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO seccion.*
SELECT nom_dpto INTO nombre FROM adtb00001
WHERE departamento = seccion.departamento
DISPLAY BY NAME seccion.*,nombre
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO seccion.*
SELECT nom_dpto INTO nombre FROM adtb00001
WHERE departamento = seccion.departamento
DISPLAY BY NAME seccion.*,nombre
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
IF seccion.status_t = "E" THEN
LET numero_msg = 39
CALL msg(numero_msg)
RETURN
END IF
SELECT nom_dpto INTO nombre FROM adtb00001
WHERE departamento = seccion. departamento and
status_t is null
INPUT BY NAME seccion.nom_seccion,
seccion.us_crea,
seccion.fech_crea,
seccion.us_mod,
seccion.fech_mod WITHOUT DEFAULTS
AFTER FIELD nom_seccion
IF seccion.nom_seccion IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_seccion
END IF
#### Verifica si el usuario presiono la tecla <Ctrl-C>
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
UPDATE adtb00002 SET nom_seccion = seccion.nom_seccion,
us_mod = SUSER_SNAME (),
fech_mod = GETDATE ()
WHERE cod_seccion = seccion.cod_seccion and
departamento = seccion.departamento
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE adtb00002 SET status_t = "E"
WHERE cod_seccion = seccion.cod_seccion and
departamento = seccion.departamento
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION