プロが教えるわが家の防犯対策術!

ACCESS2003、SQLSERVER2000を使用しています。

パススルークエリPQ1を作成し、リストボックスのRowSourceにしています。
PQ1はサブクエリを多用しまくっているためか、
結果が返ってくるのに7秒くらいかかっています。

PQ1の件数と、
PQ1の列[可否]の中にある'○'、'×'の件数をフォーム上の
テキストボックスに表示したいのです。

Me.txt件数.Value = DCount("*", "PQ1")
Me.txt丸件数.Value = DCount("*", "PQ1", "可否 = '○'")
Me.txt罰件数.Value = DCount("*", "PQ1", "可否 = '×'")
としたところ、約4倍の時間がかかるようになってしまいました
(その都度パススルークエリが実行されているのでしょうか)。

なるべく時間がかからないようにしたいのです。
よろしくお願いします。

A 回答 (1件)

パススルークエリは毎回実行しにいくと思います。


そのクエリは時間がかかるとわかっているならば、対応策は限られます。
1)パススルークエリを諦めて、一旦ローカルのテーブルに落とす
2)一旦DBの別テーブルに結果を押しこんでから、パススルークエリをそちらに投げる
3)リストボックスの中身を数える
 リストボックスを1列増やして、「可否」もリストボックスに入れてしまい(列幅ゼロ)、あとは.Column(c,r)の中身をループでカウントするだけです。
でも、クエリは再実行されないのでそんなにかからないと思います。

この回答への補足

回答ありがとうございます。

3)リストボックスの中身を数える
の方法で、1回実行したときと変わらない時間で
実行することができました。

ありがとうございました。

補足日時:2008/07/04 11:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す