Imprimir página | Cerrar ventana

Evaluar una regla de validación

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86933
Fecha de impresión: 26/Marzo/2026 a las 19:25


Tema: Evaluar una regla de validación
Publicado por: Bepb
Asunto: Evaluar una regla de validación
Fecha de publicación: 24/Mayo/2024 a las 14:00
Hola,

    Estoy intentando evaluar por código una regla de validación con un campo (control textBox) de un formulario y no encuentro exactamente como hacerlo, porque quiero gestionar el idioma del mensaje que ha de lanzar si no se cumple la regla en lugar de que lo haga por defecto desde la definición de la tabla.
 
he probado:
 Incluir On error ..  en la función que tengo en el evento 'Al Perder el Foco' de cada textbox

      If (Eval(Screen.ActiveForm.Controls(nomCamp).Value & " " & fld.ValidationRule)) Then

tanto con el " " separador como sin éste y me lanza un error de sintaxis no válida.

También si el .value es Null, o sea que no hay valor en ese campo, me lanza un error de 'uso no válido de Null' en la expresión.

¿Hay una guía o API de esta instrucción Eval?, porque he encontrado unos cuantos pero con unas condiciones que no acabo de entender como funciona.

Un saludo.


-------------
Saludos desde Menorca. José Luis



Respuestas:
Publicado por: javier.mil
Fecha de publicación: 24/Mayo/2024 a las 15:31
Mira   https://%20learn.microsoft.com/es-es/office/vba/api/access.application.eval" rel="nofollow - https://learn.microsoft.com/es-es/office/vba/api/access.application.eval




-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: Bepb
Fecha de publicación: 24/Mayo/2024 a las 17:13
Hola,

    Si, ese link ya lo había mirado, y he probado el 'In' y muchas otras opciones para Eval pero siempre me dice que la expresión no esta bien escrita, así que iré probando, si alguien me puede indicar u orientar como comparar la regla de validación de un campo con un valor de un textbox se lo agradecería.

Gracias y un saludo.


-------------
Saludos desde Menorca. José Luis


Publicado por: xavi
Fecha de publicación: 26/Mayo/2024 a las 18:39
Hola,

Vaya por delante que poco te puedo indicar sobre reglas de validación porque les tengo especial manía por su poca flexibilidad. 

En cuanto a tu validación: no se yo si el Screen.ActiveForm... es admisible. Teniendo en cuenta que es posible que lo lances desde el propio formulario, podría bastar con invocar al control.

Pero también te puedo sugerir que hagas tu las validaciones mediante VBA en el evento adecuado del control implicado (probablemente un BeforeUpdate para tener argumento Cancel) y seas tu quien lance los mensajes y establezca las reglas.

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Bepb
Fecha de publicación: 06/Junio/2024 a las 19:49
Hola Xavi,

     He intentado hacer la validación con Regex pero no es el sistema que usa Access en las validaciones de las ValidationRules, por lo que lo he descartado.

     Supongo que para esas validaciones usa Expresiones, con lo que significa que si lo haces por código y teniendo en cuenta todos tipo de operadores, constantes, identificadores y funciones sería bestial la rutina que pudiera evaluar cualquier Regla de validación posible en el campo ValidationRule.

    Al final me he descantado por cambiar el idioma de los ValidationText de todas las tablas, sólo los campos que tengan una ValidationRule, al inicio de la aplicación y cuando se dispare el error de Validación ya tenga el texto introducido. El único handicap que he encontrado ha sido hallar como cambiar ese valor en tablas vinculadas que están en otra base de datos, pero al final encontré un post tuyo en el cual se indica perfectamente como hacerlo.

Muchas gracias.
Un saludo.
Se puede cerrar el tema.


-------------
Saludos desde Menorca. José Luis



Imprimir página | Cerrar ventana