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

248 lines
6.7 KiB
Plaintext

{
---------------------------------------------------------------------------
PROGRAMA : ADPRMT009
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Profesiones
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Mayo 21, 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
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL adprmt009()
END MAIN
FUNCTION adprmt009()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM adfmmt009 FROM "adfmmt009"
DISPLAY FORM adfmmt009
DISPLAY "adprmt009" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Profesiones" AT 6,37 ATTRIBUTE(BLACK)
MENU
ON ACTION nuevo
let int_flag = false
INITIALIZE emplea.* TO NULL
CALL adpcad009()
ON ACTION buscar
let int_flag = false
CALL adpcmf009()
ON ACTION Salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION adpcad009()
WHENEVER ERROR CONTINUE
## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO
INPUT BY NAME profesion.*
## VERIFICA QUE EL CODIGO NO EXISTA EN EL CATALOGO DE PROFESIONES. SI
## EXISTE ENTONCES DESPLIEGA LOS DATOS DEL REGISTRO EXISTENTE.
BEFORE FIELD cod_prof
NEXT FIELD nom_prof
AFTER FIELD nom_prof
IF profesion.nom_prof IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_prof
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
## SI NO OCURRE NINGUN ERROR SE PROCEDE A INSERTAR EL REGISTRO
IF profesion.nom_prof IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_prof
ELSE
SELECT MAX(a.cod_prof) INTO profesion.cod_prof FROM adtb00010 a
IF profesion.cod_prof IS NULL THEN
LET profesion.cod_prof = 0
END IF
LET profesion.cod_prof = profesion.cod_prof+1
DISPLAY BY NAME profesion.cod_prof
INSERT INTO adtb00010 VALUES (profesion.cod_prof,profesion.nom_prof,
null, SUSER_SNAME (), GETDATE(), null, null)
LET numero_msg = 1
CALL msg(numero_msg)
NEXT FIELD cod_prof
END IF
AFTER FIELD fech_mod
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION adpcmf009()
## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA
## MODIFICACION DE REGISTROS.
WHENEVER ERROR CONTINUE
CONSTRUCT criterio ON adtb00010.* FROM adtb00010.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE * FROM adtb00010 where ",
" status_t is null and ",
criterio clipped,
" ORDER BY 1"
PREPARE busca FROM selec
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
DECLARE dato SCROLL CURSOR FOR busca
OPEN dato
FETCH FIRST dato INTO profesion.*
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
DISPLAY BY NAME profesion.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT dato INTO profesion.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME profesion.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS dato INTO profesion.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME profesion.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST dato INTO profesion.*
DISPLAY BY NAME profesion.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST dato INTO profesion.*
DISPLAY BY NAME profesion.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
IF profesion.status_t = "E" THEN
LET numero_msg = 39
CALL msg(numero_msg)
RETURN
END IF
## SE SELECCIONAN LOS CAMPOS MODIFICABLES
INPUT BY NAME profesion.nom_prof,
profesion.us_crea,
profesion.fech_crea,
profesion.us_mod,
profesion.fech_mod WITHOUT DEFAULTS
AFTER FIELD nom_prof
IF profesion.nom_prof IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_prof
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
## AQUI SE ACTUALIZAN LOS REGISTROS
UPDATE adtb00010 SET nom_prof = profesion.nom_prof,
us_mod = SUSER_SNAME (),
fech_mod = GETDATE()
WHERE cod_prof = profesion.cod_prof
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
## AQUI SE ELIMINAN LOS REGISTROS
COMMAND KEY ("L") "eLiminar"
UPDATE adtb00010 SET status_t = "E"
WHERE cod_prof = profesion.cod_prof
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION