Error sentencia sql
BUENAS. Estaría muy agradecido si pudieran resolver un problema que no doy con la solución.
En mi proyecto Access tengo 2 tablas que incorporan los siguientes datos:
tblPersonal: id, nombre, usuario, password
Datos:
1, juan perez, juan, 123abc
2, JOSE LUIS, PEPE, hola
tblPermisos: tipo_filtro, nombre_fitro, usuario1 (JUAN) , usuario2 (PEPE)
Datos:
MENU, CLIENTES, 1, 0
MENU, CAJA, 1, 1
menu, proveedores, 0,1
Lo que pretendo es que con una sentencia SQL detecte si el usuario activotiene permisos (valor=1 permiso, valor=0 no permiso) para los diferentes botones del menu. Lo he intentado de la siguiente forma, pero no lo consigo:
Private Sub Form_Open(Cancel As Integer)
Dim rst As DAO.Recordset, _
strSQL As String
strSQL = "SELECT tblPersonal.USUARIO, tblPermisos.TIPO_FITRO, tblPermisos.NOMBRE_FILTRO, tblPermisos." & lngUsuario & " "
strSQL = strSQL & "FROM tblPermisos, tblPersonal "
strSQL = strSQL & "WHERE (tblPersonal.USUARIO=" & lngUsuario & ") AND (tblPermisos.FITRO=MENU)"
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
If (rst.EOF And rst.BOF) Then
MsgBox "No hay ningún elemento", vbInformation + vbOKOnly, "ATENCION"
Else
rst.MoveFirst
Do While Not rst.EOF
If rst!NOMBRE_FILTRO = "CAJA" Then
ElseIf (rst! & lngUsuario ) <> 0 Then
Me.cmdCaja.Enabled = True
End If
If rst!NOMBRE_FILTRO = "CLIENTES" Then
ElseIf (rst! & lngUsuario ) <> 0 Then
Me.cmdClientes.Enabled = True
End If
If rst!NOMBRE_FILTRO = "PROVEEDORES" Then
ElseIf (rst! & lngUsuario ) <> 0 Then
Me.cmdProveedores.Enabled = True
End If
rst.MoveNext
Loop
End If
CierraRecordsetDAO rst
End Sub
lngUsuario es una variable pública declarada como string inicialmente al entrar al proyecto
El error que me da con este código es el 3615.
En mi proyecto Access tengo 2 tablas que incorporan los siguientes datos:
tblPersonal: id, nombre, usuario, password
Datos:
1, juan perez, juan, 123abc
2, JOSE LUIS, PEPE, hola
tblPermisos: tipo_filtro, nombre_fitro, usuario1 (JUAN) , usuario2 (PEPE)
Datos:
MENU, CLIENTES, 1, 0
MENU, CAJA, 1, 1
menu, proveedores, 0,1
Lo que pretendo es que con una sentencia SQL detecte si el usuario activotiene permisos (valor=1 permiso, valor=0 no permiso) para los diferentes botones del menu. Lo he intentado de la siguiente forma, pero no lo consigo:
Private Sub Form_Open(Cancel As Integer)
Dim rst As DAO.Recordset, _
strSQL As String
strSQL = "SELECT tblPersonal.USUARIO, tblPermisos.TIPO_FITRO, tblPermisos.NOMBRE_FILTRO, tblPermisos." & lngUsuario & " "
strSQL = strSQL & "FROM tblPermisos, tblPersonal "
strSQL = strSQL & "WHERE (tblPersonal.USUARIO=" & lngUsuario & ") AND (tblPermisos.FITRO=MENU)"
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
If (rst.EOF And rst.BOF) Then
MsgBox "No hay ningún elemento", vbInformation + vbOKOnly, "ATENCION"
Else
rst.MoveFirst
Do While Not rst.EOF
If rst!NOMBRE_FILTRO = "CAJA" Then
ElseIf (rst! & lngUsuario ) <> 0 Then
Me.cmdCaja.Enabled = True
End If
If rst!NOMBRE_FILTRO = "CLIENTES" Then
ElseIf (rst! & lngUsuario ) <> 0 Then
Me.cmdClientes.Enabled = True
End If
If rst!NOMBRE_FILTRO = "PROVEEDORES" Then
ElseIf (rst! & lngUsuario ) <> 0 Then
Me.cmdProveedores.Enabled = True
End If
rst.MoveNext
Loop
End If
CierraRecordsetDAO rst
End Sub
lngUsuario es una variable pública declarada como string inicialmente al entrar al proyecto
El error que me da con este código es el 3615.
1 Respuesta
Respuesta de Roberto Alvarado
1