例:IDO フィルタ

これらの例は、 [行権限] フォームに適用されます。

簡易 IDO フィルタの例:Username プロパティ = 現在のユーザ

全てのユーザが [ユーザ] フォームで自分のユーザ情報(説明、E-mail アドレス、グループメンバーシップなど)は表示できるが、他のユーザの情報は表示できないようにします。このためには、以下のようにフィールドを設定します。

フィールド 設定 注記
IDO UserNames フィルタは UserNames IDO にのみ適用されます。
ユーザ   空白のままにして、フィルタを全てのユーザに適用します。
グループ   空白のままにして、フィルタを全てのグループのユーザに適用します。
プロパティ ユーザ名 [ユーザ] フォームの [ユーザ ID] フィールドが UserNames.Username プロパティにバインドされます。(Usernames.Userid プロパティは内部使用のみです)
(演算子) =  
この値 現在のユーザ  

[この句の追加]をクリックすると、次のような擬似 SQL 照会が表示されます。


(Username = dbo.UserNameSp())

フィルタを有効化し、保存したら、ログインする(そして、フォームに対する正しい権限をもつ)誰もがユーザフォームを開くことができます。ただし、自分のユーザ ID と一致するレコードしか表示されません。

以下のトピックでは、より複雑な IDO フィルタの例を示します。

フィルタを組み合わせる方法

以下の情報は複雑な状況に適用されます。例えば IDO が互いに継承し合い、レベルごとに独自のフィルタが定義されている場合があります。別の IDO に拡張する IDO は、拡張および置換を使用していない場合は、別の IDO のフィルタを全て継承します。

有効とマークされたフィルタだけが以下の全てに使用されます。

IDO フィルタ句は、以下のカテゴリの全てまたは一部を AND で結合して構築されます。

  • 汎用 IDO フィルタで、ユーザとグループが空白です。
  • ユーザの IDO フィルタで、ユーザが現在のログインと同じです。
  • ユーザのグループの IDO フィルタで、グループが現在のユーザのグループメンバーシップのいずれかと同等です。(ユーザは、その所属グループのどれかに表示される行を全て見ることができなければならないので、グループフィルタは OR で結合されます。)

最初の 2 つのカテゴリの句は、そのカテゴリの全てのフィルタを AND で結合して構成されます。第 3 のカテゴリの句は、ユーザがメンバとして所属する各グループの句を OR で結合して構成されます。グループ句自体は、そのグループの全てのフィルタを AND で結合したものです。

言い換えると、いくつかのグループのメンバであるユーザは、これらのグループのそれぞれで表示できるデータを全て見ることができます。ただし、ユーザの個人用フィルタで制限される場合はあります(汎用フィルタでも制限される可能性がありますが、汎用フィルタは、グループフィルタより制限が強いと意味がないため、制限の度合いは低くなっています)。例えば IDO に以下のような有効なフィルタがあるとします。

全ユーザ:E1、E2

 ユーザ:U1、U2

 グループ 1:G1-1、G1-2

Group 2:G2-1、G2-2 

IDO にアクセスしたいユーザが、グループ 1 とグループ 2 の両方のメンバであるとします。その場合、構築されるフィルタは、以下のように設定されます。

 (E1 AND E2) AND (U1 AND U2) AND ((G1-1 AND G1-2) OR (G2-1 AND G2-2))

関連トピック