みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

締切り済みの質問

Access VBA内でのクエリの紐付け

お世話になります。

Accessにて、ローカルに12個(月毎)にクエリを作成し、そのらのクエリを紐付けてテーブルを作成しようとしています。

しかし、できればローカルにクエリを作成したくないので、VBA内で仮想?にクエリを作成し、それらを紐付けて最終的にテーブルを作成したいと考えています。

VBAのイメージ的には以下のような感じです。

 フォーム上のボタンがクリックされた際に、

   MySQL1 = 1月分の選択クエリ
   MySQL2 = 2月分の選択クエリ
   MySQL3 = 3月分の選択クエリ
           ・
           ・
   MySQL11 = 11月分の選択クエリ
   MySQL12 = 12月分の選択クエリ

   MySQL13 = 上記12個の選択クエリを紐つけたテーブル作成クエリ(tempを作成)

   DoCmd.RunSQL MySQL13

   'tempが作成されたら、そのテーブルをソースとしたレポートをOpen   
  
   DoCmd.OpenReport "年間実績"   


以上です。

それぞれの選択クエリを、
Set RS0 = DB.OpenRecordset(MySQL0)
Set RS1 = DB.OpenRecordset(MySQL1)
のようにして、MySQL13のテーブル作成クエリで、RS0、RS1を使用すればよいかと思ったのですが、『入力テーブルまたはクエリ”RS0”が見つかりませんでした。そのテーブルやクエリが存在していること、または名前が正しいことを確認してください。』と表示され、うまくいきません。

そもそも、上記のように仮想でクエリを作成し、それを紐付けてテーブルを作成することは可能なのでしょうか。よい方法がございましたらご教授願います。

以上、宜しくお願い致します。













 

投稿日時 - 2012-03-23 17:13:12

QNo.7379394

すぐに回答ほしいです

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

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

回答(3)

ANo.3

12個のクエリを作らずともクロス集計クエリで出来そうです。
下記の場合の、日付を製品コードに、担当者を年月日に置き換えて考えてみてください。
http://hamachan4.exblog.jp/4110849/
具体的なテーブルのデザインや具体例が分かりませんので
的を射た回答はしづらいです。

投稿日時 - 2012-03-27 09:53:52

お礼

ご回答ありがとうございます。

質問としましては、mdbのローカルにクエリを作成しないで抽出したいということです。

色々試してみて1つのクエリ(集計クエリも含め)で抽出できない為、個々にクエリを仮想で作成し、それらを紐付けて抽出出来たらと考えた次第です。

例では簡単に記載しましたが、実際には個々のクエリはもっと複雑なことをやって抽出してます。

見栄えは悪いですが、とりあえずローカルに12個のクエリを作れば、望みの抽出結果は得られるので、それでやろうと思います。

ありがとうございました。

投稿日時 - 2012-03-27 15:10:59

ANo.2

レポートあるいはフォームのレコードセットは
テーブルやクエリ以外にSQLを直接記述する
ことが可能です。以下は例です。

MySQL1の内容
SELECT * FROM data WHERE tsuki=1
MySQL2の内容
SELECT * FROM data WHERE tsuki=2

レポートのレコードセット
SELECT * FROM data ORDER BY tsuki

あるいはレポートのOpenイベントで自身の
レコードソースを動的に書き換えても実現
できます。

具体的なSQLの記載がないので、これ以上
サンプルを示せませんが、一時テーブルを
作る方法はあまり感心できません。

経験から、Openイベントでレコードソースを
動的に変更する方法が最も柔軟に対応
できますが、技術的には難しい部類に属し
ます。

投稿日時 - 2012-03-24 12:20:23

お礼

ご回答ありがとうございます。

SQLを直接記述可能なことは理解しているのですが、
一つのクエリ(SQL)で結果を抽出できない状況です。
No.1さんに返信したように、12個のクエリを紐付けして
抽出する必要があります(ユニオンクエリとは異なります)。

具体的には、年間の受注実績のテーブルがあり、そこには
受注日、製品コード、受注数量があります。

今回、抽出したいのは年間で月別の受注実績です。
以下のような感じです。

製品コード 2012年3月  2012年2月 2012年1月・・・
AAA       10       0       5
BBB        3       8       8
 ・
 ・

12個のクエリというのは、上記の年月毎のクエリです。
3月分クエリの抽出結果は、

製品コード  2012年3月
AAA        10
BBB         3
 ・
 ・
のように抽出されています。

これらを製品リストと紐つけて、年間の受注実績を
抽出したいと考えている次第です。
説明不足ですみません。

投稿日時 - 2012-03-26 09:26:08

ANo.1

ユニオンクエリのSQL文をレポートのレコードソースにすれば良いのでは?
http://makoto-watanabe.main.jp/access/acconExamplesUnionQueriesThatSortRenameFieldsReturS.htm
union all で繋げてね。

投稿日時 - 2012-03-23 20:44:30

お礼

ご回答ありがとうございます。

ユニオンクエリだと、
MySQL1の結果
   +
MySQL2の結果
   +
   ・
   ・
MySQL12の結果

と、なるかと思いますが、やりたいことは

MySQL13----MySQL1
       |
        --MySQL2
       |
        --MySQL3
         ・
         ・
で、抽出したいので、ユニオンクエリとはちょっと違います。
説明不足ですみません。

投稿日時 - 2012-03-26 09:04:24

あなたにオススメの質問