• ベストアンサー

SQL文を出力する事ってできないですか?

AccessVBAでクエリのSQL文を出力する事ってできないですか? 例えば、 クエリ1があったとして、 そのSQL文をDebug.Printで書きだしたいのですが 可能でしょうか? ADOXあたりを使えば可能でしょうか? ナビゲーションウインドウで右クリックして デザインビューで開き、SQLビューを見ればSQL文が見れますが たくさんのSQL文を取得して、 それを条件分岐したいのでVBAで書きだしたいのです。 よろしくお願いします。

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

ADO/ADOXには手を出していないので可能かどうか わかりませんが(汗)、DAOであれば可能です。 以下、指定したクエリのSQL文をイミディエイトウィンドウに出力する サンプルになります: '引数「QueryName」でクエリ名を指定 'SQL文の書き出しが成功したらTrueを、失敗したらFalseを返す Public Function PrintSQL(QueryName As String) As Boolean On Error Goto エラー処理   '「DAO」への参照設定が必要   Dim dbs As DAO.Database, qdf As DAO.QueryDef   Dim Rsl As Boolean, sSQL As String   Set dbs = CurrentDb   Set qdf = dbs.QueryDefs(QueryName)   sSQL = qdf.SQL   Debug.Print sSQL   Rsl = True 終了処理:   PrintSQL = Rsl   '念のために明示的にメモリを解放   Set qdf = Nothing   Set dbs = Nothing   Exit Function   エラー処理:   MsgBox Err.Number & ":" & Err.Description,vbCritical, "PrintSQL"   Rsl = False   Resume 終了処理 End Function

NVKLNSFAKPC
質問者

お礼

ありがとうございます。

その他の回答 (1)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.1

Debug.Print CurrentDB.QueryDefs("クエリ1").SQL とか。

NVKLNSFAKPC
質問者

お礼

Debug.Print CurrentDB.QueryDefs("クエリ1").SQL でできました。 ADOXを使わなくてもaccess(DAO)に そういうプロパティが用意されていたのですね。 ありがとうございました。

関連するQ&A