Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access Access中的条件查询_Ms Access - Fatal编程技术网

Ms access Access中的条件查询

Ms access Access中的条件查询,ms-access,Ms Access,我在表单上有一个组合框,我想用用户名填充它 如果登录的人具有管理员角色,他们可以选择公司中的任何名称。如果用户不是管理员,它将只显示他们自己的名字 我要找的是: If @Role='Admin' then SELECT UserName FROM tblUsers ELSE SELECT UserName FROM tblUsers where UserID=@CurrentUser 我知道如何传入@Role和@CurrentUser的参数。您可以在if语句中使用DLOOKUP。为了使

我在表单上有一个组合框,我想用用户名填充它

如果登录的人具有管理员角色,他们可以选择公司中的任何名称。如果用户不是管理员,它将只显示他们自己的名字

我要找的是:

If @Role='Admin' then
  SELECT UserName FROM tblUsers
ELSE
  SELECT UserName FROM tblUsers where UserID=@CurrentUser

我知道如何传入@Role和@CurrentUser的参数。

您可以在if语句中使用DLOOKUP。为了使下面的代码正常工作,您必须有一个带有username属性的控件或表单属性

If DLookUp("role","tblUsers","UserID = '" & Me.strUserID & "'")='Admin' then
  Me.cboUsers.RowSource = "SELECT UserName FROM tblUsers"
ELSE
  Me.cboUsers.RowSource = "SELECT UserName FROM tblUsers where UserID= '" & Me.strUserID "'"  
End If

我认为这个问题表达了你试图做什么的逻辑

PARAMETERS [current_user] Text ( 255 ), [which_role] Text ( 255 );
SELECT UserName
FROM tblUsers
WHERE
       [which_role] = 'Admin'
    OR UserID = [current_user];
但是,当该查询用作组合框的行源时,我不确定如何提供参数。你提到你有办法做到这一点。如果这在这里奏效,你就完了。如果没有,我建议将参数替换为表单上的文本框

SELECT UserName
FROM tblUsers
WHERE
       Forms!YourFormName!txtRole = 'Admin'
    OR UserID = Forms!YourFormName!txtCurrentUser;
您可以隐藏文本框,将其Visible属性设置为No,其值仍可用于查询