こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Access VBAでパラメータクエリをSQL文へ

すみません、、初めて質問しますが、
お手柔らかに宜しくお願い致します。

1.集計クエリ1
   ID--Group化 出庫数--合計 日付--Where条件
2..集計クエリ2
 ID--Group化 入庫数--合計 日付--Where条件

3.出力用クエリ
 ID 商品名 集計クエリ1の合計 集計クエリ2の合計
 IDと左結合で、上記のクエリを作成

デザインビューでは1~3は完成しており、

VBA上で1と2を3のSQLに置き換えるところで悩んでおります。。

どなたか教えてください。

ちなみに1.集計クエリの下記のように試してみましたが、

Dim dbs As DAO.Database
Dim qdf As QueryDef
Dim rst As DAO.Recordset

Set qdf = dbs.QueryDefs("Q_データ抽出をしたいクエリ")
With qdf
.Parameters("[Forms]![f_DataEx]![txt_YearStart]") = "2011"
.Parameters("[Forms]![f_DataEx]![txt_MonthStart]") = "02"
.Parameters("[Forms]![f_DataEx]![txt_DayStart]") = "23"
.Parameters("[Forms]![f_DataEx]![txt_YearEnd]") = "2011"
.Parameters("[Forms]![f_DataEx]![txt_MonthEnd]") = "02"
.Parameters("[Forms]![f_DataEx]![txt_DayEnd]") = "23"
Set rst = .OpenRecordset
End With

上記で求めた"rstを基にSQL文が実行できれば、実現できそうなんですが、
うまく行きません。

言葉足らずの内容もあるかと思いますが、宜しくお願い致します。

投稿日時 - 2012-09-06 21:45:11

QNo.7684299

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

#1です。

> デザインビューでは1~3は完成しており、
1~3のクエリをSQLビューで表示して、開示できますか?
(クエリ1・2の日付--Where条件の年月日に関する列定義はどうなってる?)

投稿日時 - 2012-09-09 23:38:09

ANo.3

こういう事をやりたいのではと思います。
Parameters 何処 Text;
Select F1,F2 from t1 where F1 = [何処];
のようなSQLがあって
qDef.Parameters("何処") = "あそこ"
・・的なことをやって
qDef.Sql が
Select F1,F2 from t1 where F1 = 'あそこ';
のような感じにならないかな?という事でしたら
多分、出来ません。
以前さんざん悩んで結局玉砕しました。。。

結局、元のクエリのParameters句は無くして、それをひな形として、
そのSQLから一時的なクエリを作成し
sSql = qDef("Q1").SQL
sSql=replace(sSql,"何処","こっち") 的なことをしてWHERE句の部分を変換し
db.createquerydef("Q1_TMP")
qDef("Q1_TMP").sql = sSql
のようにしました。
以上、ご参考まで。

投稿日時 - 2012-09-07 01:00:56

ANo.2

> 上記で求めた"rstを基にSQL文が実行できれば、実現できそうなんですが、
> うまく行きません。

DAOのレコードセットと、SQLは全く別系統の物ですので、レコードセットをSQL文に渡すと言うことはできません。

> 3.出力用クエリ
>  ID 商品名 集計クエリ1の合計 集計クエリ2の合計
>  IDと左結合で、上記のクエリを作成
>
> デザインビューでは1~3は完成しており、

3.出力用クエリ がすでにできているのなら、そのクエリに対して、Parameters を設定すればいいかと思います。パラメータクエリを元にさらにクエリを作成した場合、親クエリは子クエリのパラメータを引き継ぎますので。

投稿日時 - 2012-09-07 00:48:58

ANo.1

> With qdf
> .Parameters("[Forms]![f_DataEx]![txt_YearStart]") = "2011"

テーブル・クエリの列名が[nYear]で、where [nYear]=[開始年] のような記述なら

.Parameters("[開始年]") = "2011"

のように、クエリのWhere条件で列に記述する名称を書くんじゃないですか?

投稿日時 - 2012-09-06 22:09:31

お礼

早速の御回答有難うございます!!

Parametersに値を渡すところは出来て、Debug文で値を取得できるのは確認できました、、ただ、それを別のSQL文に渡せるのかどうかで悩んでおります、、

投稿日時 - 2012-09-06 22:22:09

あなたにオススメの質問