
Windows7のAccess2007を使っています。
Accessのクロス集計クエリから、追加クエリをvbaで記述したいが記述
が分からない。
vbaを使わなければ、データベースウインドウで最初にクロス集計のク
エリを作って、そのクエリを使って追加クエリを作れば終わりですが。
これと同じ事をvbaで記述をしたいのですが。
出来るのでしょうか。
例として、収穫テーブルとサイズテーブルのクロス集計を作ると仮定し
て下記の構造で作る物とします。
収穫テーブルは下記の構造です。
1. idと言う名前でオートナンバーの型
2. サイズと言う名前で数値の型
サイズテーブルは下記の構造とします。
1. idと言う名前でオートナンバーの型
2. 名前と言うフィールドの名前でテキストの型
収穫のテーブルは下記のデータが入っています。
ID サイズ
1 1
2 2
3 2
4 2
5 1
6 2
7 3
サイズのテーブルは下記のデータが入っています。
ID 名前
1 大
2 中
3 小
リレーションシップは、一側のテーブルがサイズのテーブルで、idを主
キーとします。多側のテーブルは、収穫のテーブルで多側のキーはサイ
ズです。
ここで、クエリ1の名前で
TRANSFORM Count(収穫.ID) AS IDのカウント
SELECT 収穫.ID
FROM サイズ INNER JOIN 収穫 ON サイズ.ID = 収穫.サイズ
GROUP BY 収穫.ID
PIVOT サイズ.名前;
を実行すると、下記が得られます。
ID 小 大 中
1 1
2 1
3 1
4 1
5 1
6 1
7 1
ここで、クエリ1を使って下記のクエリ2を作ります。
INSERT INTO table1
SELECT クエリ1.*
FROM クエリ1;
上記の操作でクエリ1のクロス集計クエリを使って
クエリ2の追加クエリと言う二つの手段で
クロス集計からデータを作る事が出来ます。
この操作をvbaの手法で作る方法は無いのでしょうか。
この例でのコードの記述を宜しくお願いします。
No.4ベストアンサー
- 回答日時:
こちらが参考になるでしょう。
http://www.accessclub.jp/bbs6/0008/das1904.html
おまけ、上記を参考にした
一応動作するコード。
Dim strSQL As String
strSQL = "INSERT INTO table1 " & _
"SELECT Q.* " & _
"FROM [" & _
"TRANSFORM Count(収穫.ID) AS IDのカウント " & _
"SELECT 収穫.ID " & _
"FROM サイズ INNER JOIN 収穫 ON サイズ.ID=収穫.サイズ " & _
"GROUP BY 収穫.ID " & _
"PIVOT サイズ.名前 " & _
"IN ('大','中','小')" & _
"]. As Q"
Debug.Print strSQL
CurrentDb.Execute strSQL
有難う御座います。
追加クエリと言うのは、相手のテーブルが事前に定義をされていないと動きません。
この場合のテーブルの定義はデータに依って変動しますので出来れば
テーブル作成クエリの方が、変にテーブル定義を考えないで済むので
宜しいのですが。
どうでしょうか。出来ないのでしょうか。
無理を言って済みませんがよろしくお願いします。

No.3
- 回答日時:
話は変わるけど、
自分も20年位前アクセスを使い始めて、どうにも使いづらくて、
SQLServerに乗り換えました 、どうしてもSQLに固執するなら、DBサーバ導入、プロシージャ作成して、アクセスからパススルーでも投げたらどうですか
有難う御座います。
SQLServerは使った事が無いのですが、SQLServerならば出来るのでしょうか。
実はこれと似た様な事と言うのは、以前のAccess2003の時には出来ていた様な
記事がネットでも見かけた物ですから。若しかしたからAccess2007でも出来る
のかなあと思っていました。
バージョンの変化が激しくて以前に動いていた物が動かなくなると言う事は
良くある事ですので。
データベースと言うのは、他にも例えばMySQLとかは有りますが。これと言うのは
どうなんでしょうか。この様な事は出来るのでしょうか。詰まりは、クロス集計
クエリをサブクエリとして使うと言う事がです。
実はこの出来ないと言うのは、Accessだけの問題なのでしょうか。他のデータベースで
は出来ると言う事なのでしょうか。
クロス集計クエリをサブクエリとして使い、それでテーブル作成クエリを組み立てる
と言う事がです。私がやりたいのは、クロス集計クエリをサブクエリとして使い
テーブル作成クエリを作りたいのですが。
宜しく、お願いします。

No.2
- 回答日時:
有難う御座います。
それは理解をしています。
それって言うのは結局は出来ないと言う事を言っているだけです。
何も変わりは有りません。
その方法で出来るのは分かっています。
ここで言っているのは、それ以外の方法の事です。
単純にここでの解決方法と言うのは、それがsqlで出来るのかどうかと言う事です。
sqlの構文を提示願います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
クロス集計クエリの結果をテーブルにしたい
Access(アクセス)
-
アクセス クロス集計クエリ→テーブル作成クエリ
その他(Microsoft Office)
-
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
-
4
Accessフォームにクロス集計クエリを表示させるとき
Access(アクセス)
-
5
アクセスでの追加クエリでのエラー表示について。
Access(アクセス)
-
6
クロス集計クエリの結果を一時テーブルに保存する
その他(Microsoft Office)
-
7
【Accessで困っています】クロス集計の列見出し
その他(Microsoft Office)
-
8
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
9
「データベースまたはオブジェクトは読み取り専用なので、更新できません」エラーについて
その他(データベース)
-
10
Access 2010で実行時エラー3061
その他(Microsoft Office)
-
11
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS クエリで、グループ化...
-
「データベースまたはオブジェ...
-
accessで選択クエリで得た全レ...
-
ACCESS クエリで重複データを最...
-
MS Access クエリの複雑な抽出...
-
テーブルに主キーを作らないデ...
-
Accessで現金出納簿を作りたい...
-
選択したチェックボックスのみ...
-
Accessのフォーム上にレコード...
-
Accessフォームのテキストボッ...
-
Accessフォームでデータ入力で...
-
アクセスにエクセルのデータを...
-
Accessでの累計の出し方について
-
別のテーブルのフィールドを抽...
-
アクセス・フォームのレコード...
-
accessのレポートであとから他...
-
ACCESSでテーブルから選択,表示...
-
宛名作成(Word)の郵便番号が...
-
Accessのフォームで作業領域を...
-
accessの自動更新処理をできな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
「データベースまたはオブジェ...
-
ACCESSでクエリを作成したら「...
-
ACCESSにてフィールド間の最小...
-
access・カウント結果がゼロで...
-
ACCESS クエリで、グループ化...
-
SqlServer2012 ビューとクエリ
-
access:連続データ入力
-
追加先の発見方法(SQL以外)
-
AccessのクエリをSqlサーバーの...
-
AccessでのDISTINCTROW 、DISTI...
-
SQLで優先順位が高いレコードを...
-
ACCESSで2つのテーブル比較で...
-
accessで選択クエリで得た全レ...
-
クエリで「データ型が一致しま...
-
Access200のFilterとFindの違い
-
マイクロソフトAccessでsqlのas...
-
ACCESSでデータ削除すると「読...
-
ACCESSでデータの追加は?
-
ACCESS クエリー 抽出条件が...
おすすめ情報
Access2007では、クロス集計クエリをサブクエリとして使う事は時とし
て出来る時と出来ない時がある。理由は、はっきりとはしないが。
例えば、これに関してはQBEのビューでSQLビューで作り、これは最初は
動く。然し、これをビューを切り替えると今迄に動いていた物が動かな
くなる。この時に「from苦の構文エラー」が出る。
然し、それはビューを切り替える前迄はきちんと動いていた。ここがど
うしてなのかが分かりません。結果として今迄何の問題も無く動いてい
た物がこの操作をした以降は全くとして動かなくなる。
だから、これは若しかしたらAccess2007でも禁断の領域で使っているの
かも知れない。これが、例えば他のデータベースで有れば若しかしたら
動くのかも知れませんが。