1

ユーザー名を入力したいフォームにコンボ ボックスがあります。

ログインした人が管理者の役割を持っている場合、会社内の任意の名前を選択できます。ユーザーが管理者でない場合は、自分の名前のみが表示されます。

私が探しているのは次のようなものです:

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

@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 に答える