ぺーぺーぷーぷーな日々

Claris FileMaker と戯れる日々です。

FileMakerで重複するレコードを抽出する。

  • -

以下の内容は、「重複」とか「ダブり」レコードの抽出方法について以前自分で書いた内容の焼き直しです。といっても内容は私のオリジナルでも何でもないのですが。
以前書いた記事では、FileMaker本家のヘルプ記事へのリンクを貼っていたのですが、本家のURLが変わってしまったようです。)

  • -

私がこれまで使っていた方法は、スクリプトを用いて重複するレコードを抽出する方法で、この本FileMaker Pro 関数・スクリプト [サンプル活用辞典] Ver.9対応に載っていた方法です。


FileMaker本家のヘルプには、これとは別の方法も掲載されています。
ヘルプに書かれている方法は自己連結リレーションを用いたもので、内容は FileMaker 付属のヘルプでも参照できるとおもいます。
ヘルプでの見出しは以下のような文言です。


上記ヘルプの方法をザックリと説明すれば、


「(リレーションで)内容が合致しているのにシリアルナンバーが違うってことは、ダブりだよね」


てところでしょうか。


スクリプトで抽出する方法と違ってリアルタイムに「重複」と表示させることができるので、便利かもしれません。
ただ、レコードそのものに計算式を埋め込むというのは、後々重くならないんでしょうか?
と、至らぬ心配もしてみたりして。まあ、大して影響ないのかも。


以下、本家の記事をコピペしておきます。

ここで説明する手順は、「余分な」重複レコードを検索するものです。メインレコードを決定する検索条件を指定します。
この手順では、自己連結リレーションシップ、およびそのリレーションシップを参照する計算フィールドを使用して、重複しているレコードを決定します。
最初のレコード以外の重複したレコードを検索するには、次の操作を行います。
1.
検索した重複レコードを削除する場合は、ファイルのバックアップコピーを作成します。
詳細については、ファイルの保存とコピーを参照してください。
2.
ファイル内で、レコードが固有であることを判断できるフィールドを識別します。
たとえば、「連絡先」データベースでは、同じ姓の人が複数存在する可能性があるため、「姓」フィールドでレコードの固有性を判断することはできません。社会保険番号の方が適切です。この場合は、結果をテキストで返す計算フィールドを作成し、そこで複数のフィールドのデータを結合して、レコードの固有性を判断する識別子を作成することもできます。たとえば、「姓 & 名 & 電話番号」のような計算式を作成することができます。
3.
自己連結リレーションシップを定義します。
選択した識別用のフィールドを、リレーションシップの両方のテーブルの照合フィールドとして使用します。詳細については、自己連結リレーションシップについてを参照してください。
「主」レコードとは、このリレーションシップに定義されたソート順に従って、最初に一致するレコードです。
4.
次の2つのフィールドを定義します。

「カウンタ」フィールド。このフィールドはテキストフィールドで、シリアル番号が自動入力されます([シリアル番号] を選択して、[次の値:] と [増分:] のデフォルト値をそのまま使用します)。

重複チェック」フィールド。このフィールドは計算フィールドで、次の式の結果がテキストで入力されます。

If ( カウンタ = テーブル1::カウンタ ; "固有" ; "重複" )
5.
[レコード] メニューから [全レコードを表示] を選択します。
6.
新しい「カウンタ」フィールドをクリックします。続いて、[レコード] メニューから [フィールド内容の全置換...] を選択し、[シリアル番号で置き換える:] を選択します。ここでもデフォルト値をそのまま使用します。[入力オプションのシリアル番号設定に反映させる] を選択し、[置換] をクリックします。
これによって、データベース内の既存のレコードすべてにシリアル番号が割り当てられます。新しいレコードには、シリアル番号は自動的に入力されます。
7.
重複チェック」フィールドで「重複」の検索を実行します。
重複するレコード列の最初のレコードの「重複チェック」フィールドには、「固有」という値が返され、同じレコード列のその他の重複するレコードすべてには、「重複」が返されます。


重要 照合フィールドに値が入っていないレコードは、重複データとしてフラグが立てられます。一度このように設定しておくと、FileMaker Pro によって、レコード作成時に自動的に重複レコードが識別されます。

あらゆるタスクに対応するカスタム App の作成 | FileMaker — An Apple Subsidiary