関連記事:SQLではなく、レコードセットで挿入したいときはこちら↓
ray88.hatenablog.com
■パラメータクエリの結果をテーブルにインサートするときのコード
※通常、パラメータクエリを定義のみだと先にパラメータを指定し、
QueryDefsでクエリをしていするが、結果を元にSQLを流すときは
QueryDefsは使わずにCreateQueryDefでクエリ定義を作成した後、
パラメータ指定してSQLを実行するという順序になる。
参考URL:
■ 以下のようなパラメータクエリ「Q_インサート」を作成したとします。
パラメータはフィールド部分の 担当者:[Offfiser] と
抽出条件部分の >=[price] の部分
このクエリにパラメータの値を渡し、実行後にT_テストテーブルの抽出結果を
T_インサートテスト用 テーブルにSQLを内容流して挿入する処理をします。
■T_テストテーブルのフィルターをかけていない状態は以下
■挿入先テーブル T_インサートテスト用のテーブルは以下
■コードは以下
ここでは単純にパラメータを”木村さん”、1500 としてますが、実務では変数で
設定したり、フォームのコントロールで設定したりするようになります。
Sub testDAOinsert() Dim daoDb As DAO.Database Dim daoQd As DAO.QueryDef Dim strSQL As String Set daoDb = CurrentDb strSQL = "INSERT INTO T_インサートテスト用 SELECT * FROM Q_インサート用" Set daoQd = daoDb.CreateQueryDef("", strSQL) daoQd.Parameters("[Offiser]") = "木村さん" daoQd.Parameters("[price]") = 1500 daoQd.Execute End Sub
■実行結果
パラメータの値もちゃんと反映されています。