Access - Casilla de validación con clave

 
Vista:

Casilla de validación con clave

Publicado por roberto (1 intervención) el 18/11/2016 14:09:53
Hola !

Tengo un problema, les cuento ojalá puedan ayudarme. Resulta que tengo mi tabla USUARIOS (nombre y clave), además tengo una tabla llamada PRODUCTOS (código, descripción, año, etc.). agregue 4 campos a mi tabla PRODUCTOS, que son 4 casillas de verificación. Las cuales quiero que el usuario pueda darle click ingresando su contraseña.

Atento a comentarios. Desde ante mano les agradesco la ayuda.

Saludos.
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
Val: 831
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Casilla de validación con clave

Publicado por Jesús Manuel (363 intervenciones) el 18/11/2016 14:28:26
No se como tienes relacionadas las tablas, por lo que te presento una opción que tendrías que modificar.

En el evento antes de actualizar de cada casilla (puedes crear una función para asignar a cada una y no tener que repetir todo el código), pedimos el nombre de usuario y contraseña, los guardamos en variables y lo comparamos con el nombre de usuario y la contraseña. Si no coinciden, deshacemos la acción del clic.


1
2
3
4
5
6
7
8
9
10
Dim sUser As String
Dim sPass As String
 
sUser = InputBox("Indique nombre usuario", "Usuario")
sPass = InputBox("Indique password", "Password")
 
 
If sUser <> "MiNombre" And sPass <> "MiPass" Then
    Me.Undo
End If


Con la función DLookUp podrías buscar el nombre de usuario y la contraseña en la tabla Usuarios. En caso de tener varios registros en esta tabla, tendrías que pasar algún criterio para ver cual utilizar.
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: 19
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Casilla de validación con clave

Publicado por roberto (76 intervenciones) el 18/11/2016 15:56:22
Muchas Gracias JESÚS MANUEL!!!

Usaré la opción que me diste, la verdad soy nuevo en esto. Se agradece el tiempo que te diste en ayudarme.

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
sin imagen de perfil
Val: 19
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Casilla de validación con clave

Publicado por roberto (76 intervenciones) el 22/11/2016 17:58:34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub CP_Click()
 
Dim sUser As String
Dim sPass As String
 
sUser = InputBox("Indique nombre usuario", "Usuario")
sPass = InputBox("Indique password", "Contraseña")
 
 
If IsNull(DLookup("Contraseña", "Usuario", "[Usuarios]=" & USUARIO.Value)) Then
    MsgBox "Usuario o contraseña incorrecto"
Else
    If contraseña.Value = DLookup("Contraseña", "Usuario", "[Usuarios]=" & USUARIO.Value) Then
    End If
    Me.Undo
 
End Sub

Jesús hice la opción que me diste ya que tengo más de 2 usuarios en la tabla USUARIOS y cada usuario valida una casilla propia. Pero me sale error :/. Estoy empezando en el mundo ed VB y la verdad he hechado humo con esto jajaja. he leido mucho. Te agradesco me guiaras un poco. Algo estoy haciendo mal. 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
sin imagen de perfil
Val: 831
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Casilla de validación con clave

Publicado por Jesús Manuel (363 intervenciones) el 23/11/2016 09:20:45
En tu primer post decías que tenias una tabla USUARIOS con campos Nombre y Clave, pero el DLookUp lo haces con una tabla llamada USUARIO con campos Contraseña y Usuarios??

Estas pidiendo con el InputBox el valor del usuario y la contraseña, que tendrías que usar luego con el DLookUp para ver si están en la tabla de USUARIOS, y si coinciden para permitir la validación, peor luego no los usas para nada y en cambio haces referencia a USUARIO.value y contraseña.value, que no se si están en el formulario para poder usarlos.

En cuanto al DLookUp, si utilizas como criterio where "[Usuarios]=" & USUARIO.Value lo que estas indicando es que USUARIO.Value es un dato de tipo número, con lo que tendrás un problema al comparar con el valor que pides en el InputBox y que almacenas en sUser, que has definido como texto (string)

Mi recomendación:

- crea un cuadro de texto y un botón y vete comprobando que resultados tienes con los DLookUp antes de montar todo el bucle IF

- Modifica el DLookUp para que haga la comparación con el criterio where como tipo texto:

DLookup("[Contraseña]", "[tblUsuarios]", "[NombreUsuario]= '" & sUser & "'") 'Adapta a tu caso los nombres de la tabla, campos,..

- En tu composición de los bucles IF no has cerrado uno de ellos, seguramente uno de los errores viene de ahí, y has colocado el Me.Undo fuera, por lo que se ejecutara de todas formas.


- En tu comparación IF creo que podrías poner :

If Isnull( DlookUp con el sUser para ver si esta en la tabla) or sPass <> DlookUp (Contraseña con sUser en el criterio) then
me.undo
msgbox "Usuario o contraseña erroneos"
end if

Lo que compruebas es que si no no encuentras con el DLookUp el sUser en la tabla de usuarios o si el sPass no coincide con el valor del campo contraseña en la tabla de usuarios para el sUser, no permites el clic y mandas un mensaje de aviso, si no hay problema en las comprobaciones, no pasa nada y se permite el clic en el campo. Dejo en tus manos montar los DLookUp en el 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
sin imagen de perfil
Val: 19
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Casilla de validación con clave

Publicado por roberto (76 intervenciones) el 23/11/2016 14:03:52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub CP_AfterUpdate()
 
Dim sUser As String
Dim sPass As String
 
sUser = InputBox("Indique nombre usuario", "Usuario")
sPass = InputBox("Indique password", "Contraseña")
 
If IsNull(DLookup("Contraseña", "USUARIOS", "Usuario ='" & sUser & "'")) Or sPass <> DLookup("Contraseña", "USUARIOS", "Usuario ='" & sPass & "'") Then
Me.Undo
MsgBox "Usuario o contraseña erroneos"
End If
 
End Sub

mira jesús llegé a esto gracias a ti y si el usuario es valido me permite el cambio si no lo es no valida el cambio. pero dándome cuenta le ingreso cualquier clave al usuario y valida igual el cambio :/. Otra falla que tengo es que al destiquiar la validación no me lo permite.
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: 831
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Casilla de validación con clave

Publicado por Jesús Manuel (363 intervenciones) el 23/11/2016 15:01:02
En el segundo DLookUp estas comparando el campo Usuario con la variable sPass de al contraseña

He visto tambien algún problema con el Me.Undo.

Prueba esto:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim sUser As String
Dim sPass As String
 
sUser = InputBox("Indique nombre usuario", "Usuario")
sPass = InputBox("Indique password", "Contraseña")
 
If IsNull(DLookup("Contraseña", "USUARIOS", "Usuario ='" & sUser & "'")) Or sPass <> DLookup("Contraseña", "USUARIOS", "Usuario ='" & sUser & "'") Then
 
 
    If Me.Casilla1 = 0 Then
        Me.Casilla1 = -1
    Else
        Me.Casilla1 = 0
    End If
    MsgBox "Usuario o contraseña erroneos"
 
End If


Cambia el nombre de Casilla1 por el nombre de tu checkbox
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: 19
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Casilla de validación con clave

Publicado por roberto (76 intervenciones) el 23/11/2016 18:08:23
He quedado sin palabras Jesús te lo agradezco mucho el código quedó buenissimo.
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