** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Diferenciar Minúsculas de Mayúsculas en Código VB
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoDiferenciar Minúsculas de Mayúsculas en Código VB

 Responder Responder
Autor
Mensaje
supplyg7 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 01/Abril/2019
Localización: Colombia
Estado: Sin conexión
Puntos: 5
Enlace directo a este mensaje Tema: Diferenciar Minúsculas de Mayúsculas en Código VB
    Enviado: 01/Abril/2019 a las 03:49
Buen día amigos

Tengo una estructura de control muy sencilla en Visual Basic que tiene como objetivo almacenar en un campo de texto un atributo que indique cuando una letra es mayúscula o minúscula dependiendo si se escribe por ejemplo : "a" o "A", pero Visual Basic las interpreta todas como minúscula en la estructura de control que muestro:

 If Caracter.Value = "a" Then

Forma.Value = "MINÚSCULA"

Else

If Caracter.Value = "A" Then

Forma.Value = "MAYÚSCULA"

Else

End if
End if


Asi escriba "A" mayúscula el resultado en el campo (Forma) siempre es la palabra "MINÚSCULA"  y no se por que ocurre, agradezco su ayuda...

Gracias
Arriba
fcoval Ver desplegable
Habitual
Habitual


Unido: 19/Enero/2013
Estado: Sin conexión
Puntos: 120
Enlace directo a este mensaje Enviado: 01/Abril/2019 a las 08:30
Saca el valor asci de la letra que quieres, para eso usa la función Asc.


Asc("A")    ' Devuelve 65.
Asc("a")    ' Devuelve 97.

Las letras mayúsculas estarán dentro de los valores 65 a 90
Las letras minúsculas estarán dentro de los valores 97 a 122



Editado por fcoval - 01/Abril/2019 a las 08:43
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3139
Enlace directo a este mensaje Enviado: 01/Abril/2019 a las 11:31
Hola.
Otra alternativa pasaría por cambiar la forma de "comparación" en el módulo, o sea:

Option Compare Binary

Con eso, para bien o para mal, ya se "distinguen" las mayúsculas de las minúsculas.
Espero que ayude a resolver la duda.
Ya comentas.
Un saludo a todos

Arriba
happy Ver desplegable
Moderador
Moderador


Unido: 29/Enero/2005
Localización: España
Estado: Sin conexión
Puntos: 3030
Enlace directo a este mensaje Enviado: 01/Abril/2019 a las 11:36
Una manera limpia de hacer ese tipo de comparación es utilizar la función StrComp de VBA. Realiza comparaciones entre dos cadenas, con la posibilidad de parametrizar el tipo de comparación que se utilizará. En tu caso debes utilizar el parámetro vbBinaryCompare. Esta es la definición de la función:

Function StrComp(String1, String2, [Compare As VbCompareMethod = vbBinaryCompare])

y éste un ejemplo de uso:

If StrCompare("a","A",vbBinaryCompare) = 0 then
    ' las cadenas comparadas son iguales
Else
    ' las cadenas comparadas NO son iguales
End If



Editado por happy - 01/Abril/2019 a las 11:40
Saludos,

Juan M. Afan de Ribera
Arriba
supplyg7 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 01/Abril/2019
Localización: Colombia
Estado: Sin conexión
Puntos: 5
Enlace directo a este mensaje Enviado: 01/Abril/2019 a las 13:46
Buen día a todos los amigos que me ha aportado su ayuda

La idea no es comparar "a" con "A" la idea es diferenciarlas, es decir lo opuesto, que pueda crear la estructura de control y que el condicional cuando sea "a" en un campo me agregue que es MINÚSCULA y cuando sea "A" me agregue MAYÚSCULA.

Gracias un abrazo para todos.
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3139
Enlace directo a este mensaje Enviado: 01/Abril/2019 a las 16:51
Hola.
¿Pero has probado las respuestas dadas?.
A la pregunta hecha en el primer post, salvo mejor opinión, tendría como posible  respuesta :
El option compare( si existe) que hay en la cabecera del módulo del código expuesto hace que las comparaciones entre cadenas no distingan las mayúsculas de las minúsculas. Lo "normal" es que si no existe esa "option compare" tampoco las distinga (depende de la configuración del access).
Busca en la ayuda el término "option compare" que allí está mejor explicado.
Ya comentas.
 Un saludo a todos


Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5096
Enlace directo a este mensaje Enviado: 01/Abril/2019 a las 19:00
Hola!

Otra opción:

Las letras minúsculas en el conjunto de caracteres ASCII tienen valores de 97 a 122, mientras que las letras mayúsculas tienen valores ASCII de 65 a 90.

A ver si te sirve así:

Private Sub Comando17_Click()
Select Case Asc(Me.Caracter.Value)
Case 97 To 122
MsgBox "MINÚSCULA"
Case 65 To 90
MsgBox "MAYÚSCULA."
Case Else
MsgBox "No es una letra."
End Select
End Sub


Un Saludo.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5096
Enlace directo a este mensaje Enviado: 01/Abril/2019 a las 19:23
Hola!

La solución que ha aportado el amestro Happy funciona también:

If StrComp(Caracter, LCase(Caracter), vbBinaryCompare) Then
    MsgBox "' Minúscula"
Else
    MsgBox "Mayúscula"
End If


Editado por mounir - 01/Abril/2019 a las 19:28
Un Saludo.
Arriba
supplyg7 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 01/Abril/2019
Localización: Colombia
Estado: Sin conexión
Puntos: 5
Enlace directo a este mensaje Enviado: 02/Abril/2019 a las 04:33
Gracias a todos, las opciones que presentaron funcionan correctamente.

Solucionado el problema, se puede cerrar el tema.

Saludos
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable