1

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

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

我正在寻找的是这样的:

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

我知道如何传入参数 for@Role@CurrentUser

4

2 回答 2

0

您可以在 if 语句中使用 DLOOKUP。您必须拥有一个带有用户名属性的控件或表单属性才能使以下代码正常工作。

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
于 2012-12-03T13:45:35.550 回答
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),它们的值仍可用于查询。

于 2012-12-03T15:56:49.290 回答