自己連結リレーションシップを使用した重複する値の検索
この手順では、自己連結リレーションシップ、およびそのリレーションシップを参照する計算フィールドを使用して、リレーションシップで設定されたソート順を使用して、最初のレコード以外で重複しているレコードがあるかを識別します。一度このように設定しておくと、レコード作成時に重複レコードが識別されます。
最初のレコード以外の重複したレコードを検索するには:
-
検索した重複レコードを削除する場合は、ファイルのバックアップコピーを作成してください。
ファイルの保存とコピーを参照してください。
-
重複した値を確認するフィールドを選択します。
複数のフィールドで重複した値がないかどうかを確認する場合は、複数のフィールドのデータを組み合わせた計算フィールド (テキスト結果を返す) を作成して重複を確認できます。たとえば、「
姓 & 名 & 電話番号
」のような計算式を作成することができます。繰り返しフィールドは使用しないでください。 -
リレーションシップグラフで、選択したフィールドをテーブルオカレンスから一度ドラッグしてから戻し、自己連結リレーションシップを定義します。
選択したフィールドは自己連結リレーションシップの両方のテーブルオカレンスの照合フィールドになります。リレーションシップの作成と変更を参照してください。
-
[リレーションシップの追加] ダイアログボックスで、新規テーブルオカレンスに「
同一
」という名前を付けます。自己連結の基のテーブルの 2 つ目のオカレンスが作成されます。
-
2 つのフィールドの定義:
-
ステータスツールバーの [すべてを表示] をクリックします。
-
新規の「カウンタ」フィールドをクリックし、[レコード] メニュー > [フィールド内容の全置換...] に次いで [シリアル番号で置き換える:] を選択します。ここでもデフォルト値を受け入れ、[入力オプションのシリアル番号設定に反映させる] を選択して [置換] をクリックします。
これにより、データベース内のすべての既存のレコードにシリアル番号が割り当てられます。新規レコードにはシリアル番号が自動的に入力されます。
-
「重複チェック」フィールドで「
重複
」の検索を実行します。いずれの重複レコード群も最初のレコードは「重複チェック」フィールドの値が「固有」になり、同じ重複レコード群のすべての重複レコードは「重複」とマークされます。
フィールド |
定義 |
カウンタ |
自動入力されるシリアル番号を含むテキストフィールド ([シリアル番号] を選択し、[次の値:] および [増分:] のデフォルト値を受け入れます)。 このフィールドの目的は、個々の固有のレコードに値を割り当てることです。データベースにそのようなフィールド (デフォルトの「主キー」フィールドなど) がすでにある場合は、下記の「重複チェック」フィールドの計算式で「カウンタ」フィールドの代わりにそのフィールドを使用して、手順 7 を省略できます。 |
重複チェック |
次の計算式のテキスト結果を含む計算フィールド。 コピー
この計算式は、自己連結リレーションシップを使用して、現在のテーブルオカレンスの「カウンタ」の値を、「同一」という名前の関連テーブルオカレンスの値と比較します。選択したフィールド (リレーションシップの照合フィールド) が関連テーブルオカレンスの該当フィールドと同じで、かつ「カウンタ」フィールドの値が同じであれば、現在のレコードと関連レコードは同じレコードです。したがって、現在のレコードは「固有」とマークされます。「カウンタ」フィールドの値が同じでなければ、現在のレコードと関連レコードは、選択したフィールドの値が同じである別のレコードです。したがって、現在のレコードは「重複」とマークされます。 |
重要 照合フィールドの値がないレコードは「重複」とマークされます。一度このように設定しておくと、レコード作成時に自動的に重複レコードが識別されます。