Access中的条件查询

时间:2012-12-03 13:34:49

标签: ms-access

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

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

我正在寻找的是:

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

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

2 个答案:

答案 0 :(得分:0)

您可以在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

答案 1 :(得分:0)

我认为这个查询表达了你想要做的事情的逻辑。

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),它们的值仍可供查询使用。