ココに注意
簡単なデータ検索(抽出)に凄く時間を要した!
簡単なサンプルを準備
上の様な簡単なサンプルを準備しました。
これから、商品に「リンゴ」が入って、フラグが「在庫あり」で数量が0(空白でもない)でないレコードを抽出したいと思います。
思ったレコードが抽出されない!?
抽出したいレコードは、ID2の、商品「リンゴ」数量「8」フラグ「在庫あり」です。
これは実験データなので少ないレコード数ですが、膨大なレコードになると、人的ミスなどで、数量を入力してなかったり、初期設定にて0が入力されずに空白だったりするケースもあるかと思います。
そこで、上の様なスクリプトを組んで実行しましたが、「"*" and " ≠ 0"」が違うようで、ID7が抽出されました。
何がダメなのでしょうか?
「新規レコード/検索条件」で試すもダメ
一発で絞り込もうと思いましたが、ダメそうなので、2段でやってみました。
目的のレコードも抽出されたのですが、数量0も、なぜだか検索されてしまいました。
何がだめなのでしょうか?
「対象レコードの絞り込み」でもダメ
ココがダメ
どうも、0でない物を絞るのがダメのようです
次に、"0 <"のような0以上に考えを変えて実行しましたが、何か設定方法が違うようです。
そもそも除外するという方法に問題があるようです。
「レコードを対象外に」という方法
対象レコードを絞り込んで抽出する方法しか頭にありませんでしたが、FileMakerPro19では、逆の発想で、「レコードを対象外に」するという方法があるようです。
ココがポイント
この「レコードを対象外に」という方法で除外するテクニックを学びました!
こんな簡単な事に凄い時間をとられたので、備忘録として忘れないようにしたいと思います。
絞り込んだデータに検索条件を加える
現在絞り込んで、ID2だけが出るようにしましたが、レコードID8と9を追加して今回のスクリプトを動かしてみました。
もちろん、抽出レコードは変化ありませんが、ここから、条件を緩和して、値引きフィールドの内容を、「あり」だけを検索してみたいと思います。
つまり、「商品」リンゴ、「数量」空欄と0以外、「フラグ」在庫ありに抽出したレコードに、「値引き」ありの条件を加えた時の実験になります。
条件で「値引き」ありのレコードが表示されるようになりました。
ちなみに、ID5のレコード値引きフィールドにも「あり」を入れてスクリプトを実行すると、下図のようになりました。
前半のスクリプトで抽出したレコードの意味がなくなってしまいました。
「対象レコードの拡大」から「対象レコードの絞り込み」に帰ると、条件緩和検索しようとした時点で、レコードが1件しかないので表示も1件という動作になりました。
慣れないと理解に苦しむ動作がありますが、これは使って慣れるしかないですね。