DEV AUXILIARES/EVENTO CAMPO
Descripción
Los auxiliares de tipo EVENTO_CAMPOS permiten definir eventos al entrar o salir del control de edición de un campo, para agregar validaciones o dar mensajes de advertencia. Existe una posibilidad adicional que es la de asignar valores a campos, pero no se usa y se eliminará del auxiliar ya que las asignaciones tienen su propio auxiliar en DEV AUXILIARES/ASIGNACION.
Este tipo de auxiliar aplica a:
Modo de operación
Estos auxiliares son manejados directamente por la aplicación.
Etiquetas
Las etiquetas en uso son:
<COMANDO>
Define el comando a ejecutar, cierra con </COMANDO>. No hay limitaciones en su complejidad o longitud.
Si la sentencia retorna 0 (falso) entonces la verificación falla y se muestra el posible mensaje de advertencia. Si retorna 1 (verdadero) la verificación tuvo éxito y la aplicación sigue normalmente.
<EXECUTE>
Permite definir un SQL para insertar un registro en alguna tabla, por ejemplo, para llevar registro de lo ocurrido con este auxiliar.
Cierra con </EXECUTE>.
<MENSAJE>
Permite definir un mensaje que verá el usuario si corresponde, cierra con </MENSAJE>.
<MENSAJEQ>
Permite definir un mensaje que debe ser procesado por SQL antes de mostrarlo, por ejemplo, para resolver algún FBN dentro del comando.
Cierra con </MENSAJEQ>.
<MENSAJESQL>
Ídem anterior, no se usa y debería ser eliminado. Cierra con </MENSAJESQL>.
<TAG EVENTO>
Indica el tipo de evento ante el que debe ejecutarse, los valores posibles son:
- ONENTER ocurre al entrar al control de edición. Al existir un auxiliar para las asignaciones de valores (muchas operan en el onenter) esta opción no se usa, aunque la funcionalidad está programada.
- ONEXIT ocurre al salir del control de edición.
<TAG NOBUTTONS>
Indica al sistema que la pantalla que muestra el mensaje no debe tener botones, solo queda la "x" de cierre de la ventana a la que solo se accede con el mouse. Esta opción es para que los usuarios sean conscientes del mensaje de error y no presionen ESCAPE rápidamente sin prestar atención.
<TAG TIPO>
Indica el tipo de auxiliar, los valores posibles son:
- ADVERTENCIA retorna un mensaje de advertencia.
- ASIGNACION no se usa y debería ser eliminado.
- VALIDACION valida un dato.
Ejemplos
Ejemplo de un evento de tipo ADVERTENCIA con un mensaje normal
Este auxiliar aplica a cmpCABECERA_pragma_proCUENTA que es un ancestro a cabeceras de comprobantes de proveedores, y al campo FCUENTA y verifica si el proveedor tiene embargos. Si los tiene retornará un mensaje de advertencia al usuario.
El código completo es:
<TAG EVENTO>ONEXIT <TAG TIPO>ADVERTENCIA <MENSAJE> La cuenta seleccionada tiene embargos. </MENSAJE> <COMANDO> SELECT EMBARGOS = CASE WHEN EXISTS ( SELECT * FROM PROEMBARGO WHERE PROEMBARGO.FCUENTA = FBN(FCUENTA) ) THEN CAST(0 AS INT) ELSE CAST(1 AS INT) END </COMANDO>
- La etiqueta <TAG EVENTO>ONEXIT indica que se ejecuta al salir del campo.
- La etiqueta <TAG TIPO>ADVERTENCIA indica que se trata de una advertencia.
- La etiqueta <MENSAJE> define el mensaje a mostrar al usuario, en este caso es un mensaje normal que no requiere tratamiento con SQL. Cierra con </MENSAJE>.
- La etiqueta <COMANDO> contiene el SQL. En este caso si el proveedor existe en la tabla PROEMBARGO entonces retorna 0 indicando que la verificación falló y eso har{a que se muestre el mensaje. Cierra con </COMANDO>.
Ejemplo usando <MENSAJEQ>
DECLARE @FOBJETO VARCHAR(64) = 'PRXCAMPOS' DECLARE @FCLASE VARCHAR(64) = 'PRO_CUSTOM' DECLARE @FCAMPO VARCHAR(64) = 'FNUMEROINSCRIPCION' DECLARE @FTIPO VARCHAR(24) = 'EVENTO_CAMPO' DECLARE @FCODIGO VARCHAR(64) = 'VERIFICA CUIT DUPLICADO' SELECT pAUXD.FLINEA , pAUXD.FCOMANDO FROM pAUXD WHERE pAUXD.FOBJETO = @FOBJETO AND pAUXD.FCLASE = @FCLASE AND pAUXD.FCAMPO = @FCAMPO AND pAUXD.FTIPO = @FTIPO AND pAUXD.FCODIGO = @FCODIGO ORDER BY pAUXD.FLINEA