• ベストアンサー

DAO

AccessのDAOでの質問です。 クエリーを削除しないでWhere、Order旬の部分のみをSQL文で書き換えたいのですが、書き換えたい部分はフォーム上で選択します。お知恵をおかしください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yoisho
  • ベストアンサー率64% (331/516)
回答No.3

クエリーを丸々書き換えるなら、 Dim dbs As DAO.Database Set dbs = CurrentDb dbs.QueryDefs!クエリー名.SQL = "SELECT・・・・~ で、SQL を書き換えてやるのが簡単だと思います。 QueryDefオブジェクトから取得する Recordset についてなら、クエリーをパラメータクエリーとして作って、 dbs.QueryDefs!クエリー名!パラメータ名 = ・・・・ でパラメータを設定するとか、 取得した Recordset についてなら、 その Recordset の Filterプロパティで設定する方法で、WHERE 条件については変更できると思います。(クエリーを書き換えるよりは、パフォーマンスは良い?) ただしこれだと、ORDER BY~ については、難しいかな?

onoyoko
質問者

お礼

3年ほど前にアクセスはいじっていてそれからVBかaspしかさわってなく、ど忘れしてました。これで又基本に戻れたような気がします。本当にありがとうございました。

その他の回答 (2)

  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

事前にクエリーを削除しておきQueryDef オブジェクトの Name プロパティに名前を指定すれば新たなクエリーが作成可能です。 クエリーの削除は QueryDefs.Delete くえりーほげほげ で消せます。

参考URL:
http://www.microsoft.com/JAPAN/developer/library/dao360/dacolquerydef.htm
onoyoko
質問者

補足

クエリーの削除はしたくありませんし、する必要がありません。クエリーの変更をしたいのです。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

SELECT * FROM [クエリー名] WHERE [追加条件] ではだめですか? またはフォームの「フィルタ」プロパティに[追加条件]を書き込んでも似たような事は可能です。

onoyoko
質問者

補足

ありがとうございます、でもちょっと違います。 DAOのQUERYDEFを使って追加条件と並べ替えを条件によってクエリーを作成し直したい、それをレポートで表示させたいのです。 以前にデータベースの宣言をして、作ったのですが宣言の仕方を忘れてしまったのです...

関連するQ&A