Mayúsculas o minúsculas según número de espacios

En un campo de access quiero que al insertar los datos éstos se pongan en mayúsculas o minúsculas según la posición en que estén los caracteres en relación al número de espacios que hay en la cadena de texto.

EJEMPLO:
Si hay dos espacios:
Si hay dos espacios en la cadena de texto necesitaría que el texto anterior al segundo espacio fuera en mayúsculas y el texto después del segundo espacio fuera en minúsculas.

O sea si insertoANIMAL TIGRE VELOZoanimal tigre veloz(2 espacios en el texto)

Debería pasar a ANIMAL TIGRE veloz(al perder enfoque o después de actualizar)
SI hay un espacio:

Si hay un espacio toda la cadena de texto debería aparecer en mayúsculas independientemente de como la escriba.

O sea si inserto ANIMAL TIGRE o animal tigre (1 solo espacio en el texto)

Debería pasar aANIMAL TIGRE(al perder enfoque o después de actualizar)

He probado con funciones de texto pero no logro resolverlo.

Me hallo en un formulario y me haría falta la solución con código vba si no es molestia.

1 Respuesta

Respuesta
1

No se si la utilidad real es con nombres y apellidos, pero una forma sencilla es tener los campos por separado y luego utilizando la concatenación los unes y los usas donde lo necesites. Ejemplo: campo1="ANIMAL", campo2="TIGRE", campo3="VELOZ" estamos de acuerdo en que puedes controlarlos por separado convirtiéndolos en mayúsculas Ucase(campo1), uCase(campo2) y lCase(campo3). Cuando necesites unirlos los concatenas: campox= campo1 & " " & campo2 & " " & campo3

Solo usas Uppercase y Lowercase y no tienes que programar.

Ante todo gracias por la ayudaLo de "ANIMAL TIGRE VELOZ" era un ejemplo de texto separado por dos espacios que al escribirlo en un campo se debería convertir, con el evento al perder el enfoque o después de actualizar, en "ANIMAL TIGRE veloz".

Yo no tengo tres campos sino un solo campo en el que quiero escribir datos y que éstos se autoediten en mayúsculas o minúsculas según el nº de espacios. Es solo eso lo que quiero, no quiero tener tres campos y meter los datos por separado en tres campos y luego unirlo en un solo campo como me propones. Solo quiero escribir datos en un campo, no preocupándome de si los escribo en minúsculas o mayúscula porque la idea es crear en el evento al perder enfoque del campo, que lo escrito se convierta en mayúsculas y minúsculas en relación a los espacios que hay en la cadena de texto.

Otro ejemplo por si te confundió el primero

Eescribo en el campo "A DEL AMD" o "a del amd" (2 espacios) debería convertirse al perder enfoque del campo en "A DEL amd"

y si escribo en el campo "A DEL" o "a del" (1 espacio en texto) debería convertirse al perder enfoque en "A DEL"

Sé que el camino a seguir es con código y usando funciones de texto como instr y otras pero no sabría hacerlo. Podrías indicarme alguna solución

Muy agradecido por la ayuda

Creo que con esto es suficiente para que resuelvas tu pregunta.

Function Busca_Caracter(Cadena_Original As String) As String
Dim AntCar As String
Dim NvoCar As String
Dim i As Integer
'Función para encontrar uno o varios caracteres en una cadena
For i = 1 To Len(Cadena_Original)
'Pasa carácter por carácter a una variable
AntCar = Mid(Cadena_Original, i, 1)
NvoCar = NvoCar & AntCar
MsgBox "Tengo el carácter '" & NvoCar & "'"
Select Case AntCar
'Checa si el carácter actual es un espacio " "
Case Is = " "
'Cuando lo encuentra lo pasas a otra variable
NvoCar = Left(Cadena_Original, i)
MsgBox "Encontré un espacio después de : " & NvoCar
End Select
Next i
End Function

Hola Idevelop

Gracias por tu respuesta ... aunque ya me han dado otras soluciones que solucionaron el problema que tenía. De todos modos te agradezco igualmente la rapidez con que me has respondido y la solución aportada

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas