Por favor como puedo hacer que en un text me valide que no puedo dejar más de 2 espacios seguidos

Por favor como puedo hacer que en un text me valide que no puedo dejar más de 2 espacios seguidos

1 Respuesta

Respuesta
1

Espero poder ayudarte. Te pido solo que seas un poco mas especifico... ¿cómo es la validación de esos 2 espacios seguidos? Te refieres a escribir por ejemplo: "¿FoxPro " y que en lugar de dejar el espacio después de la palabra quede solo "FoxPro"? ¿Es así? Bien... si es lo que deseas hacer, basta con agregar ALLTRIM(STR()) al valor de tu text... por ejemplo: si yo cargo el valor del text1 a la variable local 'lcNombre (para su posterior uso) y no quiero que deje espacios... ni a la izquierda ni a la derecha del text, coloca así:

LOCAL lcNombre

**--

lcNombre = ALLTRIM(STR(THISFORM.Text1.Value))

Si deseas recortar los espacios en blanco solo de la parte derecha de la cadena... usas así:

lcNombre = RTRIM(STR(THISFORM.Text1.Value))

Si deseas recortar los espacios en blanco a la izquierda, usas así:

lcNombre = LTRIM(STR(THISFORM.Text1.Value))

Ves! Bien... si es lo que necesitas... eureka! Si no va así, explicame y te ayudo con mucho gusto!

Saludos!

Desde Managua, Nicaragua!

Ravenn :D :D

Gracias por responder y mil disculpas por no ser especifico, la cuestión es por ejemplo 'María Luisa', entre maría luisa no dejar poner más de un espacio, haber si se puede impedir el ingreso de más de un espacio y validar para los datos que ya están guardados con más de 2 espacios, gracias por la ayuda.

Ahhh ya! Comprendo! Coloca un código como éste en el evento Keypress del text donde quieres validar. Yo lo tengo en TEXT2... vos colocalo en cualquier text pero cambia la referencia a dicho control.

LOCAL lcMaEmp1
**--Validamos si en la expresión hay 2 espacios en
**--blanco -" "- en lugar de 1 -" "-. Si hay mas de 2
**--se reemplaza por uno.
lcMaEmp1 = StrTran(ALLTRIM(THISFORM.Text2.Value), " ", " " )
**Si hay mas de 1 espacio en blanco
IF ALLTRIM(THISFORM.Text2.Value) <> lcMaEmp1
**
MESSAGEBOX("No puede dejar mas de 1 espacio en blanco entre los nombres")
**--Corregimos si deseamos
THISFORM.Text2.Setfocus
THISFORM.Text2.Value = lcMaEmp1
**--//
ENDIF
**--//

Luego escribri: FOX PRO (solo 1 espacio de separación) y veras que no pasa nada porque esta bien escrito.

Luego escribí: FOX PRO(hay 2 espacios, se valida)

Espero te funcione.

Para validar datos ya guardados, podes correr un SCAN... ENDSCAN y por cada registro ocupar el código.. solo en sustituís la expresión, el nombre del text por el campo:

lcMaEmp1 = StrTran(ALLTRIM(tabla.campo1), " ", " " )

y luego reemplazas el valor del campo con la variable lcMaEmp1

**--

SELECT table

TABLEREVERT(.f.)

REPLACE table.campo1 WITH lcMaEmp1

TABLEUPDATE(.T.)

Proba y me avisas cualquier cosa si no te funciona. Si necesitas algo mas... no dudes en preguntar... estamos para servir! :) :)

No olvides finalizar y puntuar si resolves!

Un abrazo!

Desde Managua, Nicaragua!

Ravenn :D :D :D

Ya he probado la primera parte y excelente amigo eres un maestro muchas gracias, un cambio que le hice fue que en vez de ponerlo en el procedimiento Keypresss lo puse en Valid, y queda de la siguiente manera:

LOCAL lcMaEmp1

lcMaEmp1 = StrTran(ALLTRIM(THISFORM.F_APELLI.Value), " ", " " )
IF ALLTRIM(THISFORM.F_APELLI.Value) <> lcMaEmp1
MESSAGEBOX("No puede dejar mas de 1 espacio entre los nombres del trabajador")
RETURN.F.
ENDIF

Lo que hace es retornar al casillero para hacer la respectiva corrección, mientras no se corrija no sale del casillero.

Voy a probar con la segunda parte y te escribo.

Excelente validación me sirvió para detectar los registros que tienen mas de un espacio entre los nombres o apellidos guardados en una base, verdaderamente muchas gracias.

Añade tu respuesta

Haz clic para o