Tengo un problema con la instruccion dlookup

Cuando ejecuto el comando me genera un error "error de compilacion, el numero de argumentos es incorrecto o la asignacion de proiedad no es vaida"

Private Sub cdm_general_Click()

userlevel = DLookup("[general]", "Usuarios", "[general] = 0", " and & [usuario] = '" & frm_menu1.Me.lbl_usuarioactivo.Caption & "'")

If userlevel = -1 Then
DoCmd.OpenForm "frm_submenugenerales"
Else
MsgBox "Acceso denegado"
End If
End Sub

He intentado muchas cosas pero no entiendo porque me emite ese error, espero me puedan ayudar y pido disculpas a cbarcos por no haber valorado una respuesta dada por el, en una ocacion anterior.

1 respuesta

Respuesta
1

DLookup solo tiene 3 argumentos.. Expr, Domain y Criteria... y yo veo 3 comas (4 argumentos). Revisa este enlace:

https://msdn.microsoft.com/es-es/library/office/ff834404.aspx 

Salu2.

¡Gracias! 

Ya revise, estructure la instrucción como indica l manual, pero igual ahora me genera este error

"se ha producido el error 424 en tiempo de ejecución: se requiere objeto"

userlevel = DLookup("[general]", "Usuarios", "[general] = 0"" and [usuario] = '" & formulario![frm_menu1]![lbl_usuarioactivo] & "'")

userlevel = DLookup("[general]", "Usuarios", "[general] = 0 and [usuario] = '" & formulario![frm_menu1]![lbl_usuarioactivo] & "'")

No tengo idea del nombre de los campos ni de los valores ni de que tratas de traer, pero la sintaxis de lo que intentas seria esa, suponiendo que el campo general contiene un numero y usuario un valor de cadena..

Salu2.

como podría hacer para enviarte  el proyecto y que tu lo revises, es un programa que sirve para control de accesos tengo una tabla de usuarios en donde tengo unos campos de si/no definidos, con el nombre de los accesos, uno de esos es "general", cuando se da click desde un botón de un formulario menú, para acceder a esa opción valida con dlookup si ese acceso tiene un valor 0 o -1, y que el usuario de la ventana de logeo corresponda a la q esta almacenada en un label del formulario del menú 

Entonces, lo que quieres es recuperar el valor de "general", por lo que no te hace falta condicionarlo:

userlevel = DLookup("[general]", "Usuarios", "[usuario] = '" & formulario![frm_menu1]![lbl_usuarioactivo] & "'")

Se supone que así "userlevel" contendrá el valor de "general", sea cual sea, y luego puedes condicionar por ese valor, tal como ya hacías...

If userlevel = -1 Then

Así es mi estimado, pero el problema es que el error me genera en la línea del dlookup,

No conozco los nombres del formulario y controles, pero el formato sería

Forms! NombreDelFormulario! NombreDelControl

Asegúrate de que esa sintaxis es correcta, por ejemplo

Forms! MiFormulario! MiEditBox

Si es correcta, dime que error te devuelve exactamente con la última línea propuesta

userlevel = DLookup("[general]", "Usuarios", "[usuario] = '" & forms!NombreDelFormulario!NombreDelControl & "'")

"se ha producido el error 424 en tiempo de ejecución: se requiere objeto" el mismo error que cuando se incluía el and en la instrucción

El problema entonces es el nombre del control.. es lo que te he dicho en el mensaje anterior... formulario![frm_menu1]![lbl_usuarioactivo] no es correcto. debes usar el formato forms!nombredelformulario!nombredelcontrol para rellenar el valor de "usuario" al hacer la consulta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas