8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【FileMaker】FileMakerで差分クエリチックに表示 - 対象外のみを表示

Last updated at Posted at 2020-02-23

請求書に該当する納品書番号が全て入っているか?入っていないものはあるか?という、いわゆる差分チェックについてです。
Accessでは「差分クエリ」というやつですね。
ちなみにAccessは触ったことありますが詳しくやってません。

では、やっていきましょう。

用意するもの

サンプルとして、「納品書」「請求書」テーブルを用意しました。
スクリーンショット 2020-02-23 23.01.19.png
単純化するために、フィールドを同一にしてあります。

リレーションシップ

これらのリレーションシップを構築しておきます。
スクリーンショット 2020-02-23 22.54.39.png
今回は納品書番号と請求書番号が一致するもの、というリレーションシップです。

テストデータ

納品書には6件、請求書には4件のデータがあります。
ここでの例として、「請求書テーブルに納品書全ての納品書番号があるかどうかを確認する」ことにします。
スクリーンショット 2020-02-23 23.04.10.png
このテストデータでは、目視で2件、請求書に入っていませんね。

スクリプト

では、これを検出するスクリプトです。
スクリーンショット 2020-02-23 22.56.00.png
画像のコメントにもありますが、要は、請求書からみて納品書に過剰にあるものをリストアップする、という内容をスクリプトにします。
このスクリプトが正常に動くには、リレーションシップグラフで「=」でnoDataをリレーションシップしてあることが大前提です。
この同一のnoDataを抽出したのち、「それ以外を表示してくれ」と最後の行で指定するわけです。

#実行してみる
はい、無事請求書にない納品書をリストアップできました。
スクリーンショット 2020-02-23 22.56.15.png

#できれば両方並べて表示したい
やりたいですよねぇ。。。
その方が見た目わかりやすいですし。

※ここから先は、FileMaker Pro Advanced 17以降の「「マスタ/詳細レイアウトのポータル」機能を利用して作成しています。それ以前のバージョンの場合は、自己リレーションシップを構築して同様の動きが実装可能です。また、納品書テーブルのリストのみを表示する場合は、特に自己リレーションシップの構築は不要です。

ということで、こんな感じでどうでしょう?
まず、納品書テーブルに「なかったよ」フラグを追加します。
スクリーンショット 2020-02-23 23.20.10.png

次に、差分リストを表示するレイアウト用にリレーションシップを構築します。
先ほどの「=」のテーブルオカレンスを利用すると対象のものしか表示しませんので、ここではあえて「照合フィールドの値に関係なく、左側のテーブルのすべてのレコードを右側のテーブルのすべてのレコードに一致させる」意味の「x」でリレーションします。

スクリーンショット 2020-02-23 23.20.18.png

新規で作ったリレーションシップを使って、レイアウトを作成します。
スクリーンショット 2020-02-23 23.20.34.png
フラグがついているのがわかりやすいように、条件付き書式を設定しておきます。
スクリーンショット 2020-02-23 23.21.32.png

スクリプトは、先ほどのスクリプトに3行追加します。
抽出された対象外レコードにフラグを一括で設定し、差分リストを構築したレイアウトを表示します。
スクリーンショット 2020-02-23 23.36.19.png
繰り返し実行する場合は、先にフラグのクリアも実行しておきます。(上記スクリプト3行目)

こんな感じで表示されます。
スクリーンショット 2020-02-23 23.39.53.png

差分チェック、Accessようにウィザードがあるわけではありませんが、この数行のスクリプトで同じようなことができますので、ぜひやってみてください。

#追記 2020/02/26
サンプルファイルをGithubへアップしてあります。
FileMaker Sample
上記サイトから、"Sample_DefferenceQuery.fmp12"をダウンロードしてください。

8
2
12

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?