【问题标题】:Conditional query in AccessAccess 中的条件查询
【发布时间】:2012-12-03 23:56:49
【问题描述】:

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

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

我正在寻找的是这样的:

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

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

【问题讨论】:

    标签: ms-access


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多