データベースの保護 > アクセス権セットの作成と編集 > レコードアクセス権の編集
 
レコードアクセス権の編集
アクセス権セットにより、ファイル内のレコードへのアクセスを制限することができます。ファイルに対して、次の内容を設定することができます。
すべてのテーブルに適用するアクセス権: 特定のアクセス権セットで、ファイル内のすべてのテーブルに存在するレコードを作成、編集、および削除できるかどうかを設定することができます。
個々のテーブルに適用するカスタムアクセス権: 各テーブルに対して、レコードアクセスを個別に設定することができます。たとえば、アクセス権セットにより次の操作を制限することができます。
各テーブル内のすべてのレコードの表示、編集、作成、または削除。
各テーブル内の特定のレコードの表示、編集、または削除。各レコードに対して論理値の結果を返す計算式を使用してアクセス権を制限します。計算結果が「真」の場合は、レコードの表示などの特定の操作に対するアクセスが許可され、「偽」の場合は禁止されます。
各テーブル内の特定のフィールドへのアクセスまたは変更。テーブル内にある 1 つまたは複数のフィールドへのアクセスが制限されている場合、ユーザには、フィールドデータの代わりに「<アクセス権がありません>」と表示されます (制限されていない場合はデータが表示されます)。
現在使用中のファイルで定義されているテーブルに対しては、レコードアクセス権のみを設定することができます。使用中のファイルに他のファイル内のテーブルとのリレーションシップが設定されていて、それらのテーブルを保護したい場合は、他のファイルの方にアカウントとアクセス権セットを作成する必要があります。アカウント、アクセス権セット、および拡張アクセス権についてを参照してください。
すべてのテーブルに対してレコードアクセス権を編集するには、次の操作を行います。
1. [アクセス権セットの編集] ダイアログボックスで、新規または既存のアクセス権セットの編集を開始します。
アクセス権セットの作成と編集を参照してください。
2. [データアクセスとデザイン] 領域でレコードにオプションを選択します。
 
アクセス権セットを編集する目的
選択項目
すべてのテーブルでレコードの作成、編集、および削除を許可する
すべてのテーブルでの作成、編集、および削除
すべてのテーブルでレコードの作成および編集を許可する (レコードの削除は禁止する)
すべてのテーブルでの作成および編集
すべてのテーブルでレコードを表示する (レコードの作成、編集、および削除は禁止する)
すべてのテーブルでの表示のみ
すべてのテーブルでレコードへのアクセスを禁止する
すべてアクセスなし
3. [OK] をクリックして [セキュリティの管理] ダイアログボックスで [OK] をクリックします。
または、1 つまたは複数のアカウントにアクセス権セットを割り当てる場合は、アカウントの作成と編集を参照してください。
個々のテーブルに対してレコードアクセス権を編集するには、次の操作を行います。
1. [アクセス権セットの編集] ダイアログボックスで、新規または既存のアクセス権セットの編集を開始します。
アクセス権セットの作成と編集を参照してください。
2. [データアクセスとデザイン] 領域でレコードに [カスタムアクセス権...] を選択します。
3. [カスタムレコードアクセス権] ダイアログボックスで、カスタムアクセス権を編集する 1 つまたは複数のテーブルを選択します([新規フィールド] を選択すると、今後作成するすべてのテーブルで使用するアクセス権を設定することができます)。
4. レコードの表示、編集、作成、および削除に対してカスタムアクセス権を設定するには、[アクセス権を設定:] 領域の [表示]、[編集]、[作成]、および [削除] の一覧から、次のいずれかのオプションを選択します。
 
選択項目
目的
はい
アクセス権 (レコードの表示、編集、作成、または削除) を許可します。
[制限...] (選択されているテーブルが 1 つの場合に有効)
テーブル内の特定のレコードに対するアクセス権 (レコードの表示、編集、または削除) を許可または禁止します。
[計算式の指定] ダイアログボックスで、計算式を入力して、[OK] をクリックします。レコード単位でアクセスを制限する式の入力を参照してください。
いいえ
アクセス権 (レコードの表示、編集、作成、または削除) を禁止します。
メモ  作成する表示、編集、作成、および削除アクセス権の組み合わせに矛盾がないように設定してください。たとえば、レコードの表示が禁止されているユーザに対して、レコードの削除を許可する必要はありません。
5. テーブル内の特定のフィールドに対するアクセスまたは変更を制限するために、次の手順に進みます。制限しない場合は、[OK] をクリックして手順 9 に進みます。
6. アクセスを制限するフィールドが含まれているテーブルを選択します。続いて、[フィールドへのアクセス] で [制限...] を選択します。
7. [カスタムフィールドアクセス権] ダイアログボックスで、アクセス権を制限する各フィールドを選択します ([新規フィールド] を選択すると、今後作成するすべてのフィールドで使用するカスタムアクセス権を設定することができます)。続いて、次のいずれかのオプションを選択します。
 
選択項目
目的
変更可能
フィールドデータの表示と編集を許可します。
表示のみ
フィールドデータの表示を許可します(フィールドデータの編集は許可されません)。
アクセスなし
フィールドへのアクセスを禁止します。
メモ テーブル内にある 1 つまたは複数のフィールドへのアクセスが制限されている場合、ユーザには、フィールドデータの代わりに「アクセスがありません」と表示されます (制限されていない場合はデータが表示されます)。
8. [OK] を 2 回クリックします。
[アクセス権セットの編集] ダイアログボックスが表示されます。
9. [OK] をクリックして [セキュリティの管理] ダイアログボックスで [OK] をクリックします。
メモ 
特定のレコードを表示できないユーザでもそれらのレコードを閲覧することはできますが、ユーザには、フィールドデータの代わりに「<アクセスがありません>」と表示されます。
ファイル内のレコード、フィールド、およびテーブルへのアクセスを制限すると、FileMaker Pro の多くの機能に影響します。影響を受ける一部の機能については、次の表を参照してください。
 
機能
データへのアクセス制限による影響
ルックアップおよび再ルックアップ
ルックアップと再ルックアップは、次の 3 つのコンポーネントにより定義されます。いずれもデータアクセス権の影響を受ける可能性があります。
リレーションシップで使用される照合フィールドには、少なくとも表示アクセス権が必要です。また、ルックアップのコピー元とコピー先の両方のテーブルで表示できないレコードでは、照合を実行することができないため、ルックアップは行われません。これには、関連する最初の照合レコード、および近似値 (小さい値または大きい値) のコピーに使用されるレコードも含まれます。
ルックアップのコピー元フィールドには、少なくとも表示アクセス権が必要です。
ルックアップのコピー先フィールドには、編集アクセス権が必要です。
アクセス権の制限のためにルックアップ処理で特定のレコードが省略された場合でも、エラーメッセージは表示されません。
関連データへのアクセス
リレーションシップが機能するには、少なくとも両方の照合フィールドに表示アクセス権が必要です。照合フィールドに基づいて表示する関連フィールドにも、少なくとも表示アクセス権が必要です。
検索
対象レコードは、常に、少なくとも表示アクセス権を持つレコードのみが表示されるようにフィルタされます。アクセスを制限すると、Get (対象レコード数) 関数の結果にも影響があります。
値一覧がフィールドの内容に基づいている場合、そのフィールドで表示アクセス権が禁止されていると、値一覧に値は表示されません。これは、ユーザが機密性の高い情報に誤ってアクセスしないようにするためです。アクセスを制限すると、ValueListItems 関数の結果も表示されなくなります。
表示アクセス権が禁止されているレコードのデータは、集計フィールドに表示される結果と、複数のレコードを集計する計算フィールドに表示される結果から除外されます。
検索/置換、フィールド内容の全置換、およびスペルチェック
これらの機能では、次のデータのみ変更することができます。
編集アクセス権があるレコードのデータ
変更可能なフィールド内のデータ
スクリプト
スクリプトを完全アクセス権で実行するオプションを設定することができます。このオプションを設定すると、アクセス権が制限されているユーザでは通常は実行できない操作の実行をスクリプトに許可することができます。このオプションが有効でない場合、制限されたデータに対してアクセスや変更を行うスクリプトステップは、いずれも失敗します。スクリプトの作成と編集を参照してください。
Apple events
ユーザが Apple events を使用してデータを取得、設定、および削除する操作は、データアクセス権の影響を受ける場合があります。ユーザに適切なアクセス権がない場合、一部の Apple events コマンドが失敗する可能性があります。
レコード単位でアクセスを制限する式の入力
テーブル内の特定のレコードに対する表示、編集、および削除アクセス権を許可または禁止するには、アクセス権が許可されているかどうかを判断する論理計算式を指定する必要があります。データベースの各レコードに対して、計算式が「真」またはゼロ以外の結果に評価される場合はアクセスが許可され、「偽」またはゼロの場合はアクセスが禁止されます。次に 2 つの例を示します。
現在のアカウントで作成されたレコードにのみアクセスを制限するには、次の操作を行います。「Record_Created_By」という名前のテキストフィールドを定義し、レコードの作成時にアカウント名が自動的に入力されるように、フィールドに自動入力オプションを設定します。(入力値の自動化の定義を参照してください)。続いて、カスタムレコードアクセス権を定義する際に、次の計算式を使用します。
Record_Created_By = Get (アカウント名)
この計算式が「真」に評価されるレコードに対してのみ、ユーザにブラウズアクセスが許可されます。
現在の日付で作成されたレコードにのみアクセスを制限するには、次の操作を行います。「Record_creation_date」という名前のテキストフィールドを定義し、レコードの作成時に作成日が自動的に入力されるように、フィールドの自動入力オプションを設定します。(入力値の自動化の定義を参照してください)。続いて、カスタムレコードアクセス権を定義する際に、次の計算式を使用します。
Record_creation_date = Get (日付)
この計算式が「真」に評価されるレコードに対してのみ、ユーザにブラウズアクセスが許可されます。
ヒント  ほとんどの場合、テーブル内の特定のレコードの表示を禁止する計算式を指定するときは、同じ計算式を使用して、同じタイプのレコードの編集と削除も禁止することをお勧めします。このように設定しないと、レコードの表示が禁止されているユーザに対して、誤ってレコードの編集や削除が許可されてしまう可能性があります。
メモ 
レコードアクセス権を決定する論理計算式は、特にユーザが編集可能なフィールドの値を参照する場合、予期しない結果を返すことがあります。たとえば、特定のレコードに対するアクセス権のみに制限されているユーザが、あるレコードを編集したために、誤ってレコードへのアクセスが拒否されてしまう可能性があります。ユーザが、レコードアクセスの論理計算式の結果が「偽」に評価されるようにレコード内容を変更したとします。そのユーザがレコードを終了すると、レコードの表示、編集、および削除のいずれも行うことができなくなります。
変更内容はユーザがレコードを終了すると同時に確定されるため、このような変更を行ったユーザは、再びレコードにアクセスすることはできません。ほとんどの場合、レコードアクセスの計算式の値には、アカウント名、作成日、および修正日を含む自動入力フィールドのような、ユーザが直接編集できないフィールドの値を利用することをお勧めします。
また、ファイルが共有されていて、レコードアクセス権を決定する論理値計算に 1 つまたは複数のグローバルフィールドが含まれる場合も、一部のグローバルフィールドを別のテーブルに移動することによって、ネットワークパフォーマンスを向上できることがあります。グローバルフィールド (グローバル格納を使用するフィールド) の定義の注意事項を参照してください。
独自の対象レコードを持つ複数のウインドウを完全にサポートするために、集計値は対象レコードの一部になっています。1 つのレコードを複数のウインドウに表示することができ、各ウインドウでは独自の対象レコードとソート順が使用されます。このような理由から、アクセス権の計算式を、特定の対象レコードを使用する値に依存する集計関数や取得関数に基づかせないでください。