Validación de campo

Dudas sobre código
Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Validación de campo

Mensajepor leadrudi » Dom May 06, 2018 6:59 pm

Me han pasado una base de datos a la que debo condicionar el contenido de un campo.
Le he dado vueltas al asunto y no hallo la forma. El campo debe cumplir las siguientes condiciones:

  • Debe empezar con letras (x cantidad <5). No sé si es <=5
  • Luego ir un único espacio en el campo.
  • Luego deben ir números (x cantidad <10). No sé si es <=10
  • Luego debe ir un único guión en el campo.
  • Y finalizar con 4 números (es un año).

Ej.:
X 5010-2018
BO 124577-2015
ZSGB 54-1998
¿Alguien me puede dar una mano?
Estoy muy saturado de código que ya no razono. Probé con loops pero ya no sé qué hacer. Borré todo lo que hice para comenzar desde cero pero ya no doy para más. Hasta pensé en hacerlo en 3 campos diferentes en el form y concatenarlo en el definitivo pero me dijeron que no.
:oops: :mrgreen: :|

pitxiku
VIP
Reto01
Mensajes: 176
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Validación de campo

Mensajepor pitxiku » Dom May 06, 2018 9:06 pm

Una posibilidad es usar expresiones regulares. Por ejemplo:

Código: Seleccionar todo

Public Function ComprobarCodigo(Codigo As String) As Boolean
    'Código a controlar
    'A???? 0#########-0000
    Const clave As String = "^([a-zA-Z]{1,5})([\s])([\d]{1,10})([\-])([\d]{4})$"
    Dim re As Object    'RegExp
   
    Set re = CreateObject("vbscript.regexp")
   
    With re
        .Pattern = clave
        .IgnoreCase = False
        .Global = False
       
        ComprobarCodigo = .Test(Codigo)
    End With
   
    Set re = Nothing
End Function

Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Re: Validación de campo

Mensajepor leadrudi » Dom May 06, 2018 9:37 pm

¡Ah! El día que a un chimango le salgan manos iba a lograr algo así. No sé tanto como para resolverlo tan magistralmente.
Ahora, ¿cómo lo uso? Si lo "llamo", siempre devuelve falso y el caracter es ingresado de todas formas (cumpla o no con la validación).
Estoy tan aturdido con esto que ya no sé ni lo que sé.
:oops: :mrgreen: :|

pitxiku
VIP
Reto01
Mensajes: 176
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Validación de campo

Mensajepor pitxiku » Lun May 07, 2018 12:25 pm

Te he preparado un pequeño ejemplo, se puede descargar desde aquí:

- https://c.gmx.es/@563071200301947727/Mz ... 0vz3qIjG0Q

Y el archivo es código.zip

En él verás que hay 2 fórmulas:

1. En la tabla tblCodigosMascara, el campo Codigo tiene un valor en su propiedad Máscara de entrada. Así se obliga a introducir letras o números conforme se desea. El "problema" es que se pueden intercalar espacios entre los números/letras opcionales, con lo que el resultado queda un pelín raro. Se puede llegar a mejorar con la propiedad Formato, pero como hay caracteres que pueden o no estar, no he conseguido un resultado que me guste.

2. En la tabla tblCodigosRegla, el campo Codigo no tiene nada en sus propiedades Máscara de entrada y/o Formato. El control lo hacemos en el formulario frmCodigosRegla y con la función que te puse antes. En el evento Antes de actualizar del formulario, comprobamos si el código introducido es válido. Si no lo es, avisamos y cancelamos la actualización. El inconveniente aquí es que no trabajamos directamente sobre la tabla, con lo que hay que acordarse de controlar los códigos en todos los sitios donde pueda interactuar el usuario.

Luego ya es usar la que más te guste, u otra que encuentres y que sea mejor.

P.D.: Viendo tus códigos de ejemplo, he modificado la regla en la base de datos. No admite letras minúsculas, sólo mayúsculas.


Actualizo:

He logrado hacer algo con las propiedades Formato y Máscara de entrada. Ahora ya se muestra el código un poco mejor, a no ser que al usuario le de por colocar espacios en vez de usar las flechas de desplazamiento.

He actualizado el archivo, así que si lo habías descargado, tendrás que volver a descargar para ver los cambios en las 2 propiedades.

Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Re: Validación de campo

Mensajepor leadrudi » Jue May 10, 2018 3:21 am

Solo me sale una palabra: GENIO.
Igual, evidentemente, nunca hubiera llegado a algo así con el conocimiento que tengo. Pero esto me abre a ofrecerle mejoras.
De todos modos, esto lo hago ad honorem. No tengo interés más que en aprender a usar VBA más en profundidad. Y siemrpe que se me presenta algo surge una solución quizá loca, pero desencadena una serie de aprendizajes que em quedó de piedra.
¡MUCHAS MUCHAS MUCHAS MUCHAS GRACIAS!
:oops: :mrgreen: :|


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados