Formulario en Access con permisos

Necesito ayuda con este error ya no sé dónde mirar y que probar.

1 respuesta

Respuesta
1

Marcos, vamos por partes

1º ¿Hay algún cuadro de texto en el formulario que se llame Userlevel o es una variable?

2º La instrucción

Userleve=Isnull....

Por más que la mire no la entiendo. Después hablaré de Isnull. Le estás diciendo que busque en el campo Frmpacientes de la tabla tblUsuarios...¿es qué hay algún campo que se llame así?

Por otro lado le dices que busque en aquellos registros en que FrmPacientes=0...¿Pero no estás buscando precisamente ese valor?

Pero bueno, vamos a suponer que te encontrara algo, que lo dudo. No sé para que sirve la instrucción Isnull delante.

Por ejemplo, supongamos que tengo la tabla, como dices

Donde se supone que si tiene la casilla marcada es que tiene autorización y si no está marcada que se jo...

Y tengo un formulario, con una etiqueta donde aparece el nombre del usuario y un botón

Como el usuario es Pepe y en la tabla, en el campo FrmPacientes no tiene la casilla marcada, cuando pulso el botón

En este caso el código, tratando de hacerlo igual que tú, es

Private Sub Comando27_Click()
Dim userlevel As Byte
userlevel = DLookup("frmpacientes", "tblUsuarios", "usuario='" & Me.LblUsuarioActivo.Caption & "'")
If userlevel = -1 Then
DoCmd.OpenForm "formulario1"
Else
MsgBox "No tiene autorizacion para esto", vbOKOnly + vbInformation, "Otra vez será"
End If
End Sub

Pero te funcionaría exactamente igual sin necesidad de definir variable

Private Sub Comando27_Click()
If DLookup("frmpacientes", "tblUsuarios", "usuario='" & Me.LblUsuarioActivo.Caption & "'") = -1 Then
DoCmd.OpenForm "formulario1"
Else
MsgBox "No tiene autorizacion para esto", vbOKOnly + vbInformation, "Otra vez será"
End If
End Sub

Hola Julián González Cabarcos  gracias por contestar, te respondo a tus preguntas.

1. es una variable que esta dentro de un modulo 

frmPacientes, no es un campo es un formulario

tblUsuarios es una tabla y hay es donde esta el campo Usuarios

He probado tus dos opciones y me sigue dando el mismo error y ya no se que hacer, ayudame por favor

Gracias

Ahora si que me he perdido definitivamente. La instrucción

Userlevel=.......

No la entiendo, la instrucción Dlookup se compone de tres partes

1º El sitio(campo) en el que tiene que buscar

2º El lugar donde debe buscar(tabla o consulta)

3º El(los) criterio(s) de búsqueda

Pero tu le estás diciendo que busque en el campo FrmPacientes(que no existe) de la tabla TblUsuarios, en aquel registro en que FrmPacientes( que te recuerdo que no existe)...

Si la tabla Usuarios tiene, al menos, Usuario y Userlevel( o Autorización, o como se llame) puedes cambiar en la instrucción que te puse FrmPacientes por Userlevel

Por otro lado, ¿la variable en un módulo?

¿Puedes poner una imagen del diseño de la tabla Usuarios? Es para saber como se llaman los campos y de que tipo son

Este es el modulo

Option Compare Database
Option Explicit
Public vForm As String
Public UserLevel As Integer
Public LogedUser As String
Public Sub PassPermisos()
If vForm = "frmPermisos" Then
    UserLevel = (IsNull(DLookup("[Administrador]", "tblUsuarios", "[Administrador] =  0 " _
                & " AND [Contrasena] = '" & Form_frmAutorizar.txtcontraseña & "'")))
End If
If vForm = "frmUsuarios" Then
    UserLevel = (IsNull(DLookup("[UsuariosData]", "tblUsuarios", "[UsuariosData] =  0 " _
                & " AND [Contrasena] = '" & Form_frmAutorizar.txtcontraseña & "'")))
End If
End Sub

Vamos a hacer una cosa, si quieres, repito, si quieres, mándame un mensaje ( sólo el mensaje) a gonzalezcabarcos@gmail.com y te preparo un ejemplo, que quizá se vea mejor, y te lo envío. Si lo haces, en el asunto del mensaje pon tu alias Marcos José, ya que si no sé quien me escribe, ni los abro.

P.D. Ten en cuenta que a las 21:00 empieza el Atlético-Barcelona

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas