kameo
2026/02/05 (木) 13:25:25
9eaf4@2128d
hiroton様ありがとうございます。「なぜDLookupが遅いのか?」はなんとなくレベルですが理解しました。
今回作成のモジュール概要は A:顧客テーブル B:売上テーブル C:締め日テーブル D:売上明細テーブル 等があります。各テーブルにはオートナンバー型IDがあります。売上毎締め日期日クエリでそれぞれ連結させて売上毎の締め日付、支払期日等を他のモジュールで算出してまして、それは問題なく機能してました(この時は処理速度も速かったです)。
Aには顧客毎の支払条件があります(Cから選択)。その支払条件が変更になる場合が発生しました(例えば売上日付が2026/2/1から締め日が変更)。Aテーブルの支払条件を改定後の内容にしてしまうと、過去の売上分も改訂された締め日になってしまうので、対策としてE:変更前支払条件テーブルを作成し(顧客ID、変更前の締め日ID、初期日、最終日 等のフィールド)それに変更のあった顧客分のみ変更前の支払条件を入力してます。今回作成のモジュールにDCountでテーブルEから対象顧客分をカウントして、それが0の場合はAテーブルからから、1以上ならEテーブルから締め日IDを抽出しました。今後同一顧客で2回以上の変更もあるかもを想定して売上日付をEテーブルの初期日、最終日の期間内かどうかも判定させて条件に合う締め日IDを抽出させてます。このモジュールを売上毎締め日期日クエリに組み込み実行すると結構時間かかるので、Dlookで締め日IDを抽出が原因?でしたのでSQLでしたらと思ったのです。
このモジュールでいくつかの値(支払条件テキスト、締め実日等)も同じパターンで値を抽出しているのも遅い原因と思いますが。
この方法が良くないでしょうか?
通報 ...