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で質問しましょう!
似たような質問が見つかりました
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
クロス集計クエリの結果をテーブルにしたい
Access(アクセス)
-
アクセス クロス集計クエリ→テーブル作成クエリ
その他(Microsoft Office)
-
Accessのクロス集計→テーブル作成で値がない場合の対処法
Access(アクセス)
-
-
4
複数列フィールド値のクロス集計
Access(アクセス)
-
5
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
6
クエリのデータをテーブルに入れたい
Access(アクセス)
-
7
ACCESSで縦に並んだテーブルデータを横に並べることは出来ますか?
Access(アクセス)
-
8
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
-
9
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
10
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
11
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
12
accessで選択クエリで得た全レコードをテーブルに取り込む方法
その他(データベース)
-
13
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
14
ACCESSにて
Access(アクセス)
-
15
「RunSQL」と「Execute」の違い
Access(アクセス)
-
16
クロス集計クエリの結果を一時テーブルに保存する
その他(Microsoft Office)
-
17
オートコンプリート機能?候補を表示させたくない
Access(アクセス)
-
18
どこにもフォーカスを当てたくない
Access(アクセス)
-
19
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
20
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
ACCESSにてフィールド間の最小...
-
ACCESSでクエリを作成したら「...
-
access・カウント結果がゼロで...
-
ACCESS クエリで、グループ化...
-
accessで選択クエリで得た全レ...
-
「データベースまたはオブジェ...
-
Accessのクロス集計クエリから...
-
Access VBA内でのクエリの紐付け
-
Access のクエリの一時保存
-
データベースの変換です。
-
ACCESS クエリー 抽出条件が...
-
Access2000でVBAからパラメータ...
-
Access200のFilterとFindの違い
-
SqlServer2012 ビューとクエリ
-
月別の利用者実人員の集計方法
-
ACCESSで2つのテーブル比較で...
-
Accessのパラメータクエリを他...
-
ユニオンクエリについて
-
SQLで優先順位が高いレコードを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
ACCESSでクエリを作成したら「...
-
access・カウント結果がゼロで...
-
ACCESS クエリで、グループ化...
-
「データベースまたはオブジェ...
-
クエリで「データ型が一致しま...
-
ACCESSにてフィールド間の最小...
-
SQLで優先順位が高いレコードを...
-
追加先の発見方法(SQL以外)
-
accessで選択クエリで得た全レ...
-
access:連続データ入力
-
Accessのフィルタ検索でデータ...
-
アクセスでフォームが更新でき...
-
ACCESS クエリー 抽出条件が...
-
ユニオンクエリについて
-
ACCESSで2つのテーブル比較で...
-
Access あるクエリを利用して...
-
Accessで「クエリーが複雑すぎ...
-
ACCESS のクエリー実行に異常に...
-
Accessのクロス集計クエリから...
おすすめ情報
Access2007では、クロス集計クエリをサブクエリとして使う事は時とし
て出来る時と出来ない時がある。理由は、はっきりとはしないが。
例えば、これに関してはQBEのビューでSQLビューで作り、これは最初は
動く。然し、これをビューを切り替えると今迄に動いていた物が動かな
くなる。この時に「from苦の構文エラー」が出る。
然し、それはビューを切り替える前迄はきちんと動いていた。ここがど
うしてなのかが分かりません。結果として今迄何の問題も無く動いてい
た物がこの操作をした以降は全くとして動かなくなる。
だから、これは若しかしたらAccess2007でも禁断の領域で使っているの
かも知れない。これが、例えば他のデータベースで有れば若しかしたら
動くのかも知れませんが。