Access - error 2471

 
Vista:

error 2471

Publicado por Error en la instruccion (1 intervención) el 04/04/2016 14:01:37
Estoy haciendo un formulario de ingreso con clave, entonces diseñé dos campos para el ingreso de datos, usuario y contraseña. Lo primero es validar los campos que no sean nulos sino emiten cuadro de error.
Luego busco el campo nombre de la tabla personal donde la contraseña coincida con la ingresada en el formulario, y me da error 2471.

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
Private Sub Comando6_Click()
Dim Contra As String, privi As String
 
If Nz(Me.Usuario, "") = "" Then
MsgBox "El campo Usuario está vacío", vbInformation, "Error 201" 'corroboro que el campo no esté vacío
Me.Usuario.SetFocus 'vuelvo el cursor al control de ingreso de usuario
ElseIf Nz(Me.Contraseña, "") = "" Then
MsgBox "El campo Contraseña está vacío", vbExclamation, "Error 201" ' lo mismo con la contraseña
Me.Contraseña.SetFocus 'idem
End If
privi = DLookup("[Nombre]", "[personal]", "personal.privilegio=" & Me.Contraseña)
Select Case privi
    Case Is = "Administrador"
        DoCmd.OpenForm "ADMIN"
    Case "Visacion"
        DoCmd.OpenForm "VISACION"
    Case "Tesoreria"
        DoCmd.OpenForm "TESORERIA"
    Case "Prensa"
        DoCmd.OpenForm "PRENSA"
    Case "Secretaria"
        DoCmd.OpenForm "SECRETARIA"
    Case "Ploteo"
        DoCmd.OpenForm "PLOTEO"
    Case Else
    MsgBox "No es usuario de sistema"
End Select
 
End Sub

Sale un cuadro donde expresa:

Se ha producido el error '2471' en tiempo de ejecución
La expresión que ha especificado como parámetro de la consulta produjo el error 'twist'

donde twist es el dato del campo contraseña
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

error 2471

Publicado por Enrique Heliodoro (1664 intervenciones) el 04/04/2016 14:39:03
Se ha definido a la contraseña como un campo de texto (... Dim Contra As String ...)

Si es un campo de texto, como tal hay que tratarlo:

Original: privi = DLookup("[Nombre]", "[personal]", "personal.privilegio=" & Me.Contraseña)

Corregido: privi = DLookup("[Nombre]", "[personal]", "privilegio = '" & Me.Contraseña "'")

Nota:
En una tabla NO se pueden repetir nombres de campos, así que 'ponerle un apellido' (personal.privilegio) en este entorno carece de sentido.
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

error 2471

Publicado por ruddypc (1 intervención) el 20/09/2019 01:56:20
De antemano gracias por el texto, lo aplique como tal y al menos a mi no me funciono, por lo que me detuve a analizar y comprendi que entre la letra a y las comillas debia agregar un &, y apegandome al ejemplo que plantean
Corregido: privi = DLookup("[Nombre]", "[personal]", "privilegio = '" & Me.Contraseña "'")

quedaria de la siguiente manera (solo muestro la parte final):
"privilegio = '" & Me.Contraseña & "'")

completo quedaria como sigue:
Corregido: privi = DLookup("[Nombre]", "[personal]", "privilegio = '" & Me.Contraseña & "'")
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

error 2471

Publicado por Anonimo (3303 intervenciones) el 21/09/2019 00:09:36
Felicidades, no por encontrar el gazapo, si no porque has utilizado el ejemplo para lo que su autor lo creo: para aprender
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