Objetivo
Crear componentes que sean capaces de validar determinada información.
En este ejemplo, se realizará un componente para validar varios campos.
Estos componentes complementan al componente acceso de datos y de actualización de base de datos presentado en entradas anteriores.
Configuración
Se utiliza SQL para el desarrollo del código. El componente formará parte de un programa de servicio y será exportable por lo que podrá ser llamado por el programa que enlace este programa de servicio.
- Los nombres de los componentes (Val_Nombre, Val_IdPais). Utilizo siempre Val_xxxxxx donde xxxxx es el nombre del campo a validar.
- El nombre del módulo donde estarán los componentes BAN01M1
- El miembro (/Copy) con la definición del prototipo con los componentes y con la definición de estructuras será BAN01M1CP
- El programa de servicio donde estarán los módulos BAN01SRV. Tendrá un miembro asociado con el mismo nombre con la definición (binder) de los componentes a exportar.
Miembro /Copy. BAN01M1CP
Se describen las estructuras de datos que dan servicio al componente de acceso a base de datos y el prototipo de llamada. Estarán en un miembro fuente independiente para que sea utilizado como /Copy tanto por el fuente del componente como los fuentes de los posibles programas que lo utilicen.
*==========================================================
* Validar Campo de Nombre de cliente
* E01 - No permite blancos
*==========================================================
DVal_Nombre PR n
D P_Nombre 50 Const
D P_IdError 3
*==========================================================
* Validar Campo de Pais
* E01 - No permite blancos
* E02 - Pais no existe
*==========================================================
DVal_IdPais PR n
D P_IdPais 3 Const
D P_IdError 3
Está compuesto por:
- (Val_Nombre) Definición de prototipo (interfaz) para validar el campo de nombre del fichero de clientes.
- (Val_IdPais) Definición de prototipo (interfaz) para validar el campo de Id de Pais del fichero de clientes.
Al principio del fuente del componente se utiliza el /COPY para “cargar” las estructuras de datos y los prototipos de los componentes.
/COPY *LIBL/QRPGLESRC,BAN01M1CP
Fuente del componente. Val_Nombre en BAN01M1
Este componente valida que sea correcto el contenido del campo nombre que pertenece al fichero de clientes
El componente tiene el siguiente código:
PVal_Nombre B EXPORT
DVal_Nombre PI n
D P_Nombre 50 Const
D P_IdError 3
/Free
If P_Nombre = *Blanks;
P_IdError ='E01';
Return *Off;
EndIf;
P_IdError = *Blanks;
Return *On;
/End-Free
P E
Parámetros de salida
- Como función, devuelve True o False. El primero si la validación es correcta y el segundo si es errónea
- (P_IdError) Identificativo del error que detecta o en caso de que sea correcto, devuelve blancos.
Parámetros de entrada
- (P_Nombre) El contenido del campo Nombre a validar.
Código
En este ejemplo se valida que el campo Nombre esté informado. Si es blancos, devuelve que no es válido y el identificativo de error ('E01'). En caso contrario, devuelve que es correcto y el identificativo estará a blancos.
PVal_IdPais B EXPORT
DVal_IdPais PI n
D P_IdPais 3 Const
D P_IdError 3
D wTotReg S 10 0
/Free
If P_IdPais = *Blanks;
P_IdError ='E01';
Return *Off;
EndIf;
wTotReg = *Zeros;
Exec Sql SELECT count(*) into :wTotReg
FROM Pais
WHERE IdPais = :P_IdPais;
If wTotReg = *Zeros;
P_IdError ='E02';
Return *Off;
EndIf;
P_IdError = *Blanks;
Return *On;
/End-Free
P E
Fuente del componente. Val_IdPais en BAN01M1
Este componente valida que sea correcto el contenido del campo IdPais que pertenece al fichero de clientes
El componente tiene el siguiente código:
PVal_IdPais B EXPORT
DVal_IdPais PI n
D P_IdPais 3 Const
D P_IdError 3
D wTotReg S 10 0
/Free
If P_IdPais = *Blanks;
P_IdError ='E01';
Return *Off;
EndIf;
wTotReg = *Zeros;
Exec Sql SELECT count(*) into :wTotReg
FROM Pais
WHERE IdPais = :P_IdPais;
If wTotReg = *Zeros;
P_IdError ='E02';
Return *Off;
EndIf;
P_IdError = *Blanks;
Return *On;
/End-Free
P E
Parámetros de salida
- Como función, devuelve True o False. El primero si la validación es correcta y el segundo si es errónea
- (P_IdError) Identificativo del error que detecta o en caso de que sea correcto, devuelve blancos.
Parámetros de entrada
- (P_IdPais) El contenido del campo IdPais a validar.
Código
En este ejemplo se valida que el campo IdPais esté informado. Si es blancos, devuelve que no es válido y el identificativo de error ('E01'). Después verifica que el país exista en la tabla de países. Si no existe, devuelve que no es válido y el identificativo de error ('E02').
En caso contrario, devuelve que es correcto y el identificativo estará a blancos.
No hay comentarios:
Publicar un comentario