【MS Access】動的にパススルークエリを作成する

スポンサーリンク
MS Access

Accessでシステム開発をする場合、リンクテーブルを介したクエリを作成し、そのクエリをフォームに連携させて表示させたり、検索フォームの検索時に使用する場合もあるかと思います。

ただ、リンクテーブルとクエリの組み合わせだと、Accessの仕様上処理速度が著しく遅くなる場合もあります。そんな時はADOを使ってリンクテーブルを介さずにSQLを発行するという改善案もありますが、パススルークエリを使って、データベースに直接SQLを投げる方法もあります。

パススルークエリを使用する場合、通常パススルークエリでデータベースに渡せるSQL文は固定であり、検索条件の変更に合わせて動的に中身を変えて実行することはできません。ただ、状況によってはどうしてもパススルークエリで動的に検索条件などを変えて実行したい場合もあるかも知れません。

よって今回はDAOを使用して、パススルークエリを動的に再作成するサンプルプログラムを紹介します。

■前提条件
 VBAエディタの参照設定で以下の参照を追加
 Microsoft DAO 3.6 Object Library


※Access2007以降でaccdb形式の場合は以下を参照(この参照での検証は未実施)
Microsoft Office XX.X Access Database Engine Object Library

■処理概要
第一引数で渡されたクエリ名が登録されていたら削除して、第二引数で渡されたSQLを元にパススルークエリを作成します。

呼び出す際には、以下のように記述してください。

 Call CreatePassThroughQuery(“作成するパススルークエリ名”,”SQL文字列”)

今回も参考になれば幸いです。

ではでは皆さまごきげんよう。