我在表单上有一个组合框,我想用用户名填充。
如果登录的人员具有管理员角色,他们可以选择公司中的任何名称。如果用户不是管理员,则只显示自己的名称。
我正在寻找的是:
If @Role='Admin' then
SELECT UserName FROM tblUsers
ELSE
SELECT UserName FROM tblUsers where UserID=@CurrentUser
我知道如何传递@Role
和@CurrentUser
的参数。
答案 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),它们的值仍可供查询使用。