2012-12-03 87 views
1

我想用用戶名填充表單上的組合框。Access中的條件查詢

如果登錄的人員具有管理員角色,他們可以在公司中選擇任何名稱。如果用戶不是管理員,它將只顯示他們自己的名字。

我要找的是一樣的東西:

If @Role='Admin' then 
    SELECT UserName FROM tblUsers 
ELSE 
    SELECT UserName FROM tblUsers where [email protected] 

我知道如何傳遞參數的@Role@CurrentUser

回答

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),其值將仍然可用來查詢。

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