重複レコードの確認(そうすれば削除が効率的)

重複レコードを抽出する手段として、検索モードで該当のフィールドに「!」を入力して・・・
というやり方もいいんだけれど、重複レコードはサクッと削除したい場合にはこれだと面倒。

そこで見付けた方法が下記。

参照URL:http://forums.filemaker.com/posts/582db6d688

この方法は、「重複している」と判断出来る固有値があることが前提。

例えば、商品マスタならJANコード、会員マスタなら会員番号などといった値。

とはいえ、本来、JANコードや会員番号は入力時に重複チェックをするべきでしょうね。
なので、ここではもっと趣味に近い使い方でDVDの管理なんかをしてみて、タイトルで重複しているかどうかを確認してみようかと。

趣味で集めているDVDくらいなら、ついうっかり前にも登録したのに、また登録してしまう、なんてこともありそうなので。

ということで手順。

 
 
1.自己リレーションを張る
今回の例では「フィルムビデオ管理」というテーブルの「フィルムタイトル」というフィールドを自己リレーション。
FMPro_redundant_01

 
2.「フィルムビデオ管理」テーブルにタイプが「計算」のフィールド「レコードチェック」を作成
計算式は「Get ( レコード ID )」
FMPro_redundant_02FMPro_redundant_03

 
3.「フィルムビデオ管理」テーブルにタイプが「計算」のフィールド「重複レコードチェック」を作成
計算式は「Case(レコードチェック=フィルムビデオ管理 2::レコードチェック;”オリジナル”;”重複”)」
FMPro_redundant_02FMPro_redundant_04

 
4.レイアウト上に2と3で作ったフィールドを適当に配置。(あ、2はレコードIDが表示されるだけだからいらないかな)
FMPro_redundant_05FMPro_redundant_06

 
 
これで、「重複レコードチェック」というフィールドには、そのレコードが最初のひとつ目なら「オリジナル」が入り、それ以降のレコードで重複している場合には「重複」という文字列が入る。

必要なら「重複」レコードから「オリジナル」のレコードにデータをコピーするなりしよう。

そして、「重複レコードチェック」フィールドを「重複」で検索して、「対象レコード削除」とすれば、重複したレコードはスッキリ消せる。

 
ただし!
この方法、重複しているかどうかを判断する固有値が入力されているフィールドに何も入力されていないと「重複」とされる。
つまり、今回の例の場合、「タイトル」が未入力だと、他の項目が重複していない唯一のレコードだったとしても「重複」と判断されてしまう。

 
うっかり、固有値であるはずのフィールドに何も入力していないと、それらも「重複」とされてしまうので、検索時に固有値の入力されているフィールドに「*」を入力して未入力を除外した方が良いかも。
(ま、これも新規にレコードを作成する際に未入力を許可しなければ良いのだけれどね・・・)

 
こんな感じで重複レコードがチェックできると、意外と便利ですね。

コメントを残す

メールアドレスが公開されることはありません。