Access - AYUDA EN CODIGO ASCII

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

AYUDA EN CODIGO ASCII

Publicado por francisco (7 intervenciones) el 29/08/2017 06:41:07
buenas noches, estoy creando un programa y tengo un formulario login y funciona, pero mi profesor ha pedido que al momento de dar click en el boton ingresar este mismo verifique si en el campo de la contraseña tiene los siguientes criterios

1. minimo una mayuscula
2. minusculas
3. un caracter especial
4. mayor de 6 caracteres

segun tengo entendido esto se puede realizar en uso del codigo ASCII y esto es lo que tengo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
v = 0
v = Len(Me.Texto0)
'si la calve tiene menos de 6 caracteres
If v < 6 Then
MsgBox "la contraseña debe tener maximo 6  caracteres usted escribio: " & v & " verifiquelo", vbCritical, "Atencion"
Exit Sub
 
 
Else
    End If
 
'verifica si la clave lleva numeros
 cont = 0
 
For I = 1 To v
 
 
L = Mid(Me.Texto0, I, 1)
AA = Asc(L)
If L = 1 Or L = 2 Or L = 3 Or L = 4 Or L = 5 Or L = 6 Or L = 7 Or L = 8 Or L = 9 Then
cont = cont + 1
Else
 
End If
Next I
 
If cont = 0 Then
 
MsgBox "la contraseña debe tener como minimo un numero", vbCritical, "no se puede acceder"
Me.Texto0 = ""
Else
 
End If
cont = 0
 
 
'verifica si la clave lleva mayusculas
 
 cont = 0
 
For L = 1 To v
 
 
j = Mid(Me.Texto0, L, 1)
AA = Asc(j)
If j = "A" Or j = "B" Or j = "C" Or j = "D" Or j = "E" Or j = "F" Or j = "G" Or j = "H" Or j = "I" Or j = "J" Or j = "K" Or j = "L" Or j = "M" Or j = "N" Or j = "Ñ" Or j = "O" Or j = "P" Or j = "Q" Or j = "R" Or j = "S" Or j = "T" Or j = "U" Or j = "V" Or j = "W" Or j = "X" Or j = "Y" Or j = "Z" Then
cont = cont + 1
Else
 
End If
Next L
 
If cont = 0 Then
 
 
MsgBox "la contraseña debe tener como minimo una mayuscula", vbCritical, "no se puede acceder"
Me.Texto0 = ""
Else
 
End If
cont = 0


el problema que tengo es que no verifica si se escribio una mayuscula me podrian ayudar?:( sinceramente no entiendo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

AYUDA EN CODIGO ASCII

Publicado por Anonimo (3316 intervenciones) el 29/08/2017 10:13:30
Para facilitar su uso Access no diferencia las mayúsculas de las minúsculas, se le tendría que explicitar de forma especifica (exigiendo en las declaraciones que las comparaciones sean binarias).

Pero hay formas mas sencillas de verificar si un carácter esta representado por mayúsculas o minúsculas: su valor ASC:
... (en la ventana de inmediato) ....
?ASC("a")
97
?ASC("A")
65


Un comentario adicional, aunque funcione (Access es magnánimo) si hacemos esta operación:
L = Mid(Me.Texto0, I, 1)

En 'L' tenemos un CARACTER no un valor numérico, la comparación correcta seria asi:
If L = "1" Or L = "2" Or L = .......................

Para comparar con valores numéricos debería hacerse asi:
L = ASC(Mid(Me.Texto0, I, 1))

If L = 49 Or L = 50 Or L = .......................
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Oscar Pérez
Val: 198
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

AYUDA EN CODIGO ASCII

Publicado por Oscar Pérez (80 intervenciones) el 29/08/2017 14:39:08
Buenas!

Te voy a pasar unas funciones (retocadas por mi) que encontré en algún otro post con muchas más validaciones... XD

Prácticamente en una línea de código puedes verificar si el carácter cumple el requisito (tendrás que hacer un bucle que recorra todos los carácteres introducidos de la contraseña sean mayúsculas.

Combinandolas todas podrás hacer muchas cosas... :P

Cada función devuelve TRUE si encuentra el carácter ascii dentro de la cadena del instr.. Por eso una función para cada tipo de comprobación. Te lo explico por si te pregunta tu profe, que no te quedes a cuadros jajajaja

Es algo rudimentario pero funciona de las mil maravillas, sobre todo para la validación de campos donde configuras el evento al pulsar una tecla del campo con el código:

1
2
3
4
5
6
7
Private Sub campo_KeyPress(KeyAscii As Integer)
If EsLetra(KeyAscii) Then Exit Sub
MsgBox "Error: No has pulsado una letra"
KeyAscii = 0
campo.Backcolor = vcRojo
campo2.SetFocus
campo.SetFocus

Así verificas carácter por carácter y sino cumple marcas en rojo el campo y situas el foco en él, como campo obligatorio. Aunque para que funcione el setfocus primero tienes que ir a otro control del mismo formulario. XD Cosas del access jajajaja

Aquí te paso las funciones...

PD: Si las mejoras o adaptas te agradeceré lo postees y así tomamos nota

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
'1
'*************************************************************************************************
Function EsMayuscula(KeyAscii As Integer) As Boolean
 
EsMayuscula = IIf(InStr("ABCDEFGHIJKLMNÑOPQRSTUVWXYZ", Chr(KeyAscii)) = 0 And KeyAscii <> 8, False, True)
 
End Function
 
'2
'*************************************************************************************************
Function EsMinuscula(KeyAscii As Integer) As Boolean
 
EsMinuscula = IIf(InStr("abcdefghijklmnñopqrstuvwxyz", Chr(KeyAscii)) = 0 And KeyAscii <> 8, False, True)
 
End Function
 
'3
'*************************************************************************************************
Function EsNumero(KeyAscii As Integer) As Boolean
 
EsNumero = IIf(InStr("0123456789", Chr(KeyAscii)) = 0 And KeyAscii <> 8, False, True)
 
End Function
 
'4
'*************************************************************************************************
Function EsLetra(KeyAscii As Integer) As Boolean
 
EsLetra = IIf(InStr("ABCDEFGHIJKLMNÑOPQRSTUVWXYZ abcdefghijklmnñopqrstuvwxyz", Chr(KeyAscii)) = 0 And KeyAscii <> 8, False, True)
 
End Function
 
'5
'*************************************************************************************************
Function EsFecha(KeyAscii As Integer) As Boolean
 
EsFecha = IIf(InStr("0123456789/-", Chr(KeyAscii)) = 0 And KeyAscii <> 8, False, True)
 
End Function
 
'6
'*************************************************************************************************
Function EsAlfanumerico(KeyAscii As Integer) As Boolean
 
EsAlfanumerico = IIf(InStr("ABCDEFGHIJKLMNÑOPQRSTUVWXYZ abcdefghijklmnñopqrstuvwxyz0123456789", Chr(KeyAscii)) = 0 And KeyAscii <> 8, False, True)
 
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AYUDA EN CODIGO ASCII

Publicado por Anonimo (3316 intervenciones) el 29/08/2017 22:01:42
Una línea diferente:

La diferencia entre los caracteres en mayúsculas y minúsculas es un simple BIT del byte que lo contiene, lo que hace que la 'distancia' entre ambos en la tabla nos permita comparar si su valor ASC es superior o inferior a ¿90 por eso de redondear?.

Si es mayor ==> minúscula
Si es menor ==> mayúscula

Una simple llamada a la función (que puede devolver un True/False) definiría con una única función lo que ahora se resuelve con dos, eso si las 'variaciones locales' (que tienen valores ASC superiores a 128) se tratarían de forma independiente, entre otras cosas porque no siempre están 'en el mismo sitio' (dependen del set de caracteres utilizado para trabajar en niveles inferiores).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

AYUDA EN CODIGO ASCII

Publicado por francisco (7 intervenciones) el 30/08/2017 02:58:50
gracias :D, voy a intentarlo si le cambio algo lo publico para que lo puedan en un futuro proyecto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

AYUDA EN CODIGO ASCII

Publicado por francisco (7 intervenciones) el 12/09/2017 03:14:46
hola muchachos que pena por la tardanza pero ya pude arreglar lo del codigo se los dejare por si lo llegan a necesitar

deben colocarlo en el evento al perder el enfoque con eso ya cuando le den en el boton de ingreso ya habra evaluado la contraseña
lo unico que deben cambiarle es el nombre del campo de la contraseña en mi caso en (me.texto58) y les funcionara correctamente


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Dim texto As String
Text = Me.Texto58
Dim a As Integer
a = Len(Text)
Dim h As String
Dim e, i As Integer
Dim veri1, veri2, veri3 As Boolean
veri1 = False
veri2 = False
veri3 = False
For i = 1 To Len(Text)
h = Mid(Text, i, 1)
e = Asc(h)
If e >= 65 And e <= 90 Then
    veri1 = True
 Else
End If
If e >= 48 And e <= 57 Then
    veri2 = True
 Else
End If
If e >= 32 And e <= 47 Or e >= 58 And e <= 64 Or e >= 91 And e <= 96 Or e >= 123 And e <= 126 Then
    veri3 = True
 Else
End If
Next i
If veri1 = False Or veri2 = False Or veri3 = False Then
 MsgBox "La contraseña debe cumplir con; 1.Debe tener un numero; 2.Debe tener en ella una minuscula; 3.Debe tener en ella una mayuscula;4.Debe tener minimo un caracter especial", vbCritical, "Error"
 Me.Texto58 = ""
 Me.Texto58.SetFocus
End If
If a < 6 Then
MsgBox "la contraseña debe tener maximo 6  caracteres usted escribio: " & a & " verifiquelo", vbCritical, "Atencion"
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AYUDA EN CODIGO ASCII

Publicado por Anonimo (3316 intervenciones) el 12/09/2017 18:01:35
Corrige estas líneas:
1
2
Dim e, i As Integer
Dim veri1, veri2, veri3 As Boolean


Según la declaración actual:
1
2
3
4
5
6
7
8
texto ==> String
a ==> Integer
h ==> string
e ==>  variant
i ==> integer
veri1 ==> Variant
veri2 ==> variant
veri3 ==> Boolean

Como lo haría yo (todas declaradas al inicio):
.- Cada declaración ha de indicar SU TIPO si no se le indica será una VARIANT (no es malo, pero quita precisión al poder 'interpretar el dato' como mejor le parezca)

Dim texto As String, a As Integer, h As String, e As Integer, i As Integer, veri1As Boolean, veri2 As Boolean, veri3 As Boolean

Tras las declaraciones las variables contendrán:
1
2
3
4
5
6
7
8
texto = ""
a = 0
h = ""
e =0
i = 0
veri1 = False (0)
veri2 = False (0)
veri3 = False (0)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

AYUDA EN CODIGO ASCII

Publicado por francisco (7 intervenciones) el 18/09/2017 02:37:10
vale muchas gracias lo corregiré ahora mismo :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar