none
Diferenciar mayusculas y minusculas Access 2003

    Question

  • Hola, me gustaría saber como poder distinguir entre mayúsculas y minúsculas. Me explico:

    Tengo una tabla Usuarios en una base de datos de Access 2003, a la que accedo con ADO. Esta tabla tiene el nombre de usuario y contraseña. Pues bien lo que quiero es que al introducir la contraseña en el formulario de Access me distinga entre mayúsculas y minusculas a la hora de buscarla en la base de datos o en un recordset (este ultimo para cuando el administrador quiere asignar contraseñas de inicio).

    Tb me gustaría saber como se pueden mostrar * en vez d elo que escribes en el textbox de la contraseña, si hay alguna forma rápida o ha de ser en el evento keypress,etc.

    Saludos.

     

    Monday, March 29, 2010 5:30 PM

Answers

  • Para colocar * al teclear, coloca Contraseña en la propiedad Máscara de entrada del campo.
    En cuanto a distinguir entre mayúscula y minúscula, hay varias soluciones y ninguna del todo satisfactorio (para mi).

    Parte de la base de que las letras son guardadas como texto. Lo ideal es que ese campo sea binario, pero este tipo no existe como tal en Access(directamente); puedes crear ese campo desde una instrucción SQL Create o Alter table.

    Si a estas alturas no puedes cambiar el tipo de campo, te toca crear una función que convierte a hexadecimal la clave que introduce el usuario. Un procedimiento filtraría los usuarios para tomar las contraseñas ( si es que se puede crear mas de un usuario con el mismo nombre, lo que no me parece lógico) para convertir la clave almacenada en la tabla a hexadecimal de manera de comparar ambas cadenas.

    Esta función es sacada de la ayuda en línea de Microsoft (http://office.microsoft.com/es-es/access/HA100627603082.aspx)

    Function StrToHex (S As Variant) As Variant
    '
    ' Converts a string to a series of hexadecimal digits.
    ' For example, StrToHex(Chr(9) & "A~") returns 09417E.
    '
    Dim Temp As String, I As Integer
    If VarType(S) <> 8 Then
    StrToHex = S
    Else
    Temp = ""
    For I = 1 To Len(S)
    Temp = Temp & Format(Hex(Asc(Mid(S, I, 1))), "00")
    Next I
    StrToHex = Temp
    End If
    End Function

    Cordialmente, CJ
    Tuesday, March 30, 2010 8:04 AM

All replies

  • Para colocar * al teclear, coloca Contraseña en la propiedad Máscara de entrada del campo.
    En cuanto a distinguir entre mayúscula y minúscula, hay varias soluciones y ninguna del todo satisfactorio (para mi).

    Parte de la base de que las letras son guardadas como texto. Lo ideal es que ese campo sea binario, pero este tipo no existe como tal en Access(directamente); puedes crear ese campo desde una instrucción SQL Create o Alter table.

    Si a estas alturas no puedes cambiar el tipo de campo, te toca crear una función que convierte a hexadecimal la clave que introduce el usuario. Un procedimiento filtraría los usuarios para tomar las contraseñas ( si es que se puede crear mas de un usuario con el mismo nombre, lo que no me parece lógico) para convertir la clave almacenada en la tabla a hexadecimal de manera de comparar ambas cadenas.

    Esta función es sacada de la ayuda en línea de Microsoft (http://office.microsoft.com/es-es/access/HA100627603082.aspx)

    Function StrToHex (S As Variant) As Variant
    '
    ' Converts a string to a series of hexadecimal digits.
    ' For example, StrToHex(Chr(9) & "A~") returns 09417E.
    '
    Dim Temp As String, I As Integer
    If VarType(S) <> 8 Then
    StrToHex = S
    Else
    Temp = ""
    For I = 1 To Len(S)
    Temp = Temp & Format(Hex(Asc(Mid(S, I, 1))), "00")
    Next I
    StrToHex = Temp
    End If
    End Function

    Cordialmente, CJ
    Tuesday, March 30, 2010 8:04 AM
  • Gracias por el aporte CJ. Como dices pasar a hexadecimal es una forma aunque no deja de ser una conversión. Tener dos usuarios con el mismo nombre sería algo absurdo porque el sistema no sabría cual elegir. En mi caso, conforme he definido la aplicación si que puede haber dos usuarios con el mismo nombre, pero solo ocurriría si uno de ellos está desactivado (para almacenar su Id en las demas tablas como usuario que ha guardado ese registro), por lo que nunca habrá conflicto.
    Tuesday, March 30, 2010 10:51 AM
  • Alvaro, pero lo que has marcado como solución, realmente no lo es.

    Cordialmente,

    CJ

    Wednesday, March 31, 2010 11:52 AM
  • Si te refieres a que he marcado como solucion mi comentario en vez del tuyo tienes razon,jeje. Juraría que habia marcado el tuyo, ahora le pongo remedio. Mi marca no la puedo quitar, me da un error inesperado.
    Wednesday, March 31, 2010 2:42 PM