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

error 2471

Publicado por Enrique Heliodoro (1663 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