Definitivamente en el Validad del TXT; Solo evaluo el código si el Valor del campo es igual a 6
Caracteres.
*Validad
Local llOK
IF LEN(ALLTRIM(this.Value))==6
cRestrictedchars='/*()@#!%&_¡?+ºª<>'
cString = UPPER(this.Value)
cSpecial_Chars = UPPER(cRestrictedchars)
FOR nChar=1 TO LEN(cSpecial_Chars)
cChar = SUBSTR(cSpecial_Chars, nChar, 1)
IF (cChar $ cString)
MESSAGEBOX('El valor actual de la casilla contiene el caracter: ' + cChar + CHR(13) + ;
'Este caracter es inválido, por favor reemplácelo y continue.', 16, 'Caracter inválido')
RETURN 0
ENDIF
ENDFOR
*!* El Código de V.H.
lcSoloLetras = Trim(Chrtran(cString , "0123456789", ""))
lcSoloCifras = Trim(Chrtran(cString , m.lcSoloLetras, ""))
Do Case
Case Empty(m.lcSoloLetras + m.lcSoloCifras)
MESSAGEBOX('El valor actual de la casilla : ' +CHR(13) + ;
'No puede quedar en blanco, por favor Intente Nuevamente.', 16, 'Caracter inválido')
Case Len(m.lcSoloLetras) = 0
MESSAGEBOX('El valor actual de la casilla : ' +CHR(13) + ;
'No puede ser Solo Números, por favor Intente Nuevamente.', 16, 'Caracter inválido')
Case Len(m.lcSoloCifras) = 0
MESSAGEBOX('El valor actual de la casilla : ' +CHR(13) + ;
'No puede ser Solo Letras, por favor Intente Nuevamente.', 16, 'Caracter inválido')
Otherwise
llOK = .T.
MESSAGEBOX('El valor actual de la casilla : '+ CHR(13) + ;
'Contiene Nro. de placa OK ',64, 'Nro. Placa Correcto')
Endcase
Return Iif(m.llOK, m.llOK, 0)
ENDIF
*-Te subo el formulario con el que trabaje.