Access - Login - Al presionar Enter

 
Vista:
sin imagen de perfil

Login - Al presionar Enter

Publicado por Facundo (20 intervenciones) el 19/04/2016 18:52:57
Buenas,

Hice un login en mi Access y queria saber como se hace para que cuando presiono la tecla "Enter" inicie sesion sin necesidad de ir con el mouse hasta el boton "Ingresar".

Muchas gracias!
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
sin imagen de perfil

Login - Al presionar Enter

Publicado por Enrique Heliodoro (1664 intervenciones) el 19/04/2016 20:35:33
¿Diciéndole 'que haga lo mismo' que hace ese botón? .... (es la solución mas simple para no revolver en lo que ya funciona).
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

Login - Al presionar Enter

Publicado por Facundo (20 intervenciones) el 20/04/2016 15:49:14
Claro, pero cual sería el codigo o evento?. Porque "Al presionar Enter" no veo que exista en la lista de Eventos.

Gracias por la respuesta, Saludos!!
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

Login - Al presionar Enter

Publicado por Noelin (4 intervenciones) el 20/04/2016 16:47:18
En el evento al salir
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

Login - Al presionar Enter

Publicado por Enrique Heliodoro (1664 intervenciones) el 20/04/2016 22:19:46
Suponiendo (porque lo que en verdad existe es desconocido) que ambos objetos estén en el mismo formulario, 'lo que haga el botón ingresar', estará entre las subfunciones, en particular una que se llamara (mas o menos):
Private Sub Ingresar_Click ()

Y que finalizara con un simple
End Sub

'lo del medio' es lo que se le indica que haga el botón al ser pulsado (algo que por cierto sobraría con el actual método de 'detectar' la tecla enter).

Si lo de copiar es muy latoso o cansado, se puede acortar un poco, por ejemplo 'llamando a esa función', que si se llama como el ejemplo de arriba seria algo similar a:
Ingresar_Click

Y hará el mismo efecto que si se pulsara el susodicho, eso si, funcionara mientras no se elimine el botón (así como el código asociado a el), por eso lo de 'copiarlo' es la solución mas fiable.

Quizás queda algo en el tintero ..... 'detectar' cuando se pulsa el Enter y ello se hace utilizando el evento (de ese objeto) 'al bajar una tecla' y que podría ser algo como:

Private Sub [nombre del cuadro de texto]_KeyDown(KeyCode As Integer, Shift As Integer)
IF Keycode = VbKeyEnter Then Keycode = 0: Ingresar_Click
End Sub

(aunque sigo con mi personal preferencia de copiar lo que el otro hace, dado que 'el otro' deja de tener sentido practico y 'tiene la muerte anunciada)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Login - Al presionar Enter

Publicado por Facundo (20 intervenciones) el 22/04/2016 20:50:59
Bueno aca probé algo muy parecido a lo que dices Enrique:

1
2
3
4
5
6
Private Sub txtpassword_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
KeyCode = 0
Call CmdEntrar_Click
End If
End Sub

El problema ahora es que llama al "CmdEntrar_Click" perfectamente, pero creo que no llama a los Function "Usuario1" y "Usuario2"
Pienso que ese es el problema ya que ahora cuando estoy en el cuadro de texto para ingresar la contraseña, la introduzco, presiono "Enter" y me aparece el cartel de "Contraseña inválida".



Este es el código que tiene el botón "Ingresar":

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
Option Compare Database
Option Explicit
Dim NumIntentos As Integer
Private Sub CmdEntrar_Click()
Dim auxContraseña As String
'Comprobamos que hay datos en las cajas de texto
If Nz(Me.txtlogin.Value, "") = "" Then
MsgBox "Seleccione un nombre de usuario de la lista para acceder", vbInformation, "ATENCION"
Me.txtlogin.SetFocus
ElseIf Nz(Me.txtpassword.Value, "") = "" Then
MsgBox "Contraseña inválida", vbInformation, "ATENCION"
Me.txtpassword.SetFocus
Else
If Nz(DLookup("password", "Usuarios", "Id_usuario=" & Me![txtlogin]), "") <> "" Then
auxContraseña = DLookup("password", "Usuarios", "Id_usuario=" & Me![txtlogin])
End If
If auxContraseña <> Me.txtpassword.Value Then
If NumIntentos = 10 Then
NumIntentos = NumIntentos - 1
MsgBox "La contraseña introducida es incorrecta" & vbCrLf & _
"Le quedan " & NumIntentos & " intentos" & vbCrLf & vbCrLf & _
"Por favor, introduzca otra", vbExclamation, "INTRODUCCIÓN INCORRECTA"
Me.txtpassword.Value = ""
Me.txtpassword.SetFocus
Else
MsgBox "Contraseña inválida", vbInformation, "ATENCION"
Me.txtpassword.SetFocus
End If
Else
If DLookup("Id_acceso", "Usuarios", "Id_usuario=" & Me![txtlogin]) = 1 Then
Call Usuario1
Else
Call Usuario2
End If
'DoCmd.OpenForm stDocName, , , stLinkCriteria 'Abrimos el formulario correspondiente
DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
End If
End If
End Sub
 
Function Usuario1()
On Error GoTo Usuario1_Err
DoCmd.OpenForm "Inicio", acNormal, "", "", , acNormal
Usuario1_Exit:
Exit Function
Usuario1_Err:
MsgBox Error$
Resume Usuario1_Exit
End Function
 
Function Usuario2()
On Error GoTo Usuario2_Err
DoCmd.OpenForm "Inicio", acNormal, "", "", , acNormal
Usuario2_Exit:
Exit Function
Usuario2_Err:
MsgBox Error$
Resume Usuario2_Exit
End Function

Gracias por sus respuestas y disculpen las molestias. (Todavia soy principiante en el tema VBA)
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

Login - Al presionar Enter

Publicado por Enrique Heliodoro (1664 intervenciones) el 22/04/2016 22:00:30
A ese código le hace una buena falta un repaso con un estropajo ....

Lo mas llamativo es lo de contar el numero de intentos ... es infinito (o eso se deduce)

Al dimensionar una variable numérica se inicia con el valor cero, dado que no se le asigna otro valor, al llegar a la línea que lo compara con diez jamás los igualara (nace con cero y renace cada vez que entra y entrara cada vez que se envíe le foco fuera ...) si a eso añadimos que le descontamos una unidad, el valor que se actualizara sera negativo (0 - 1 = -1, los diez de referencia un poco mas lejos ...)

Te aconsejo que pongas un punto de interrupción y sigas paso a paso el código, esa seguridad debería 'ser segura'

Por otra parte:
Si se le asigna el valor cero al KeyCode (ambos lo hacemos), dado que se trata de la tecla 'Enter' esta no se procesara, por lo que en el cuadro de texto habrá lo que hubiere antes de comenzar (lo que se ha tecleado esta en su propiedad '.Text') y no se valida sin el 'enter' para que su valor pase a su propiedad '.Value', que es la que devuelve por defecto.

Elimina esa línea y verifica si asi funciona (la línea: KeyCode = 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