自己連結リレーションシップを使用した重複する値の検索

この手順では、自己連結リレーションシップ、およびそのリレーションシップを参照する計算フィールドを使用して、リレーションシップで設定されたソート順を使用して、最初のレコード以外で重複しているレコードがあるかを識別します。一度このように設定しておくと、レコード作成時に重複レコードが識別されます。

最初のレコード以外の重複したレコードを検索するには:

  1. 検索した重複レコードを削除する場合は、ファイルのバックアップコピーを作成してください。

    ファイルの保存とコピーを参照してください。

  2. 重複した値を確認するフィールドを選択します。

    複数のフィールドで重複した値がないかどうかを確認する場合は、複数のフィールドのデータを組み合わせた計算フィールド (テキスト結果を返す) を作成して重複を確認できます。たとえば、「姓 & 名 & 電話番号」のような計算式を作成することができます。繰り返しフィールドは使用しないでください。

  3. リレーションシップグラフで、選択したフィールドをテーブルオカレンスから一度ドラッグしてから戻し、自己連結リレーションシップを定義します。

    選択したフィールドは自己連結リレーションシップの両方のテーブルオカレンスの照合フィールドになります。リレーションシップの作成と変更を参照してください。

  4. [リレーションシップの追加] ダイアログボックスで、新規テーブルオカレンスに「同一」という名前を付けます。

    自己連結の基のテーブルの 2 つ目のオカレンスが作成されます。

  5. 2 つのフィールドの定義:

  6. フィールド

    定義

    カウンタ

    自動入力されるシリアル番号を含むテキストフィールド ([シリアル番号] を選択し、[次の値:] および [増分:] のデフォルト値を受け入れます)。

    このフィールドの目的は、個々の固有のレコードに値を割り当てることです。データベースにそのようなフィールド (デフォルトの「主キー」フィールドなど) がすでにある場合は、下記の「重複チェック」フィールドの計算式で「カウンタ」フィールドの代わりにそのフィールドを使用して、手順 7 を省略できます。

    重複チェック

    次の計算式のテキスト結果を含む計算フィールド。

    コピー
    If ( カウンタ = 同一::カウンタ ; "固有" ; "重複" )

    この計算式は、自己連結リレーションシップを使用して、現在のテーブルオカレンスの「カウンタ」の値を、「同一」という名前の関連テーブルオカレンスの値と比較します。選択したフィールド (リレーションシップの照合フィールド) が関連テーブルオカレンスの該当フィールドと同じで、かつ「カウンタ」フィールドの値が同じであれば、現在のレコードと関連レコードは同じレコードです。したがって、現在のレコードは「固有」とマークされます。「カウンタ」フィールドの値が同じでなければ、現在のレコードと関連レコードは、選択したフィールドの値が同じである別のレコードです。したがって、現在のレコードは「重複」とマークされます。

  7. ステータスツールバーの [すべてを表示] をクリックします。

  8. 新規の「カウンタ」フィールドをクリックし、[レコード] メニュー > [フィールド内容の全置換...] に次いで [シリアル番号で置き換える:] を選択します。ここでもデフォルト値を受け入れ、[入力オプションのシリアル番号設定に反映させる] を選択して [置換] をクリックします。

    これにより、データベース内のすべての既存のレコードにシリアル番号が割り当てられます。新規レコードにはシリアル番号が自動的に入力されます。

  9. 「重複チェック」フィールドで「重複」の検索を実行します。

    いずれの重複レコード群も最初のレコードは「重複チェック」フィールドの値が「固有」になり、同じ重複レコード群のすべての重複レコードは「重複」とマークされます。

重要  照合フィールドの値がないレコードは「重複」とマークされます。一度このように設定しておくと、レコード作成時に自動的に重複レコードが識別されます。