は、私は実行に時間がかかりすぎる作業クエリを持っているWHEREで変数を使用しての問題。 Accessフォームフィールドに、開始日順の異なる契約のリストを入力するために使用されています。MSアクセス - 句
次のクエリは、契約開始日(DELSTART)が現在の日付(PRICEDATE)以上の複数の商品(契約開始日を共有する)の個別契約開始日のリストを返します。
関数returndeliveryは、契約の日付属性をdoubleに変換して返します。関数returnnumericdateは日付(yyyymmdd)からdoubleを返します。
SELECT DISTINCT (tblFuturesPrices.Period),
returnnumericdate(returndelivery([PERIOD],"S")) AS DELSTART,
ReturnNumericDate(Date()) AS PRICEDATE
FROM tblFuturesPrices
WHERE returnnumericdate(returndelivery([PERIOD],"S")) >= ReturnNumericDate(Date())
GROUP BY PERIOD
ORDER BY returnnumericdate(returndelivery([PERIOD],"S"));
理想的には私は、WHERE句で変数DELSTARTとPRICEDATEを参照したいと思いますが、私はそうするときのアクセスは、変数の値を求めるプロンプトを表示します。私は、私のユーザ定義関数を何回も使用する必要があるため、クエリが必要以上に時間がかかると思います。
ソーステーブル(tblFutures)は6ヶ月さかのぼる営業日について各商品/契約の価格が含まれています。
ありがとうございます。
は十分にスマートオプティマイザは気づくであること 'returnnumericdateを3回繰り返し(returndelivery([期間]、「S」))'一度だけ評価される必要があるか、それが派生テーブルまたは 'VIEW'にこれをプッシュする役立つだろうか? – onedaywhen
私は、フォームが読み込まれ、その日が変更されたときにのみ更新する一時テーブルを設定できると考えています。私は、DELSTART宣言がテーブル値を保持し、後でそれらを参照する方が速くなることを期待していました。 – GazG