1

MS Access 2010で、ユーザーがデータビューフォームに表示できるレコードを制限することはできますか?たとえば、ユーザーAは部門Aのレコードのみを表示する必要がありますが、ユーザーBは部門Bのレコードのみを表示する必要があります。

4

1 に答える 1

1

ビジネスルールを制約として使用して、ユーザーにアクセスを許可する必要がある行のサブセットのみを返すクエリを作成します。次に、そのクエリをレコードソースとして使用してフォームを作成します。

そのアプローチは2つの条件に依存します:

  1. 現在のユーザーを識別する方法があります。
  2. WHEREビジネスルールをクエリ句として実装できます。

APIメソッドを使用して、現在のユーザーのWindowsアカウント名を取得できます。GetLoginnameの例を参照してください。dbファイルがMDB形式の場合、ULS(ユーザーレベルのセキュリティ)を設定し、CurrentUser()関数を使用してAccessユーザー名を取得できます。ULSは新しいACCDB形式ではサポートされていませんが、Access2010では引き続きMDB形式のdbファイルを使用できます。

これらのアプローチのいずれも、最初の条件を満たすことができます。カスタムユーザーアカウントを管理するコードを開発することもできますが、それは私には余計な作業のように思えます。

このようなものは、ビジネスルールをクエリWHERE句として実装できます。fOSUserName()上記のリンクからの機能を使用します。

WHERE
    department = Switch(
        fOSUserName() = 'User A', 'department A',
        fOSUserName() = 'User B', 'department B')

ただし、それほど脆弱ではないアプローチは、表示を許可する必要のある部門と一致するユーザー名を含むテーブルを内部結合することです。

于 2012-12-05T17:28:50.557 に答える