最近Excel VBAでは回答者をさせていただいておりますが、今回がはじめての質問です。
AccessやSQLについては詳しく無いため何卒宜しくお願いします。
前提・実現したいこと
Acessのフォームにおいて、次のようなマスターテーブルを区分で抽出した結果を次のような表型式で表示したいのですが、クエリのみで実現可能ですか?
VBAで二次元テーブルに変換するコードを書こうと考えていたのですが、せっかくのAccessなのでデータベースらしいやり方があるのではないか?というのと、もしクエリで出来るのであればVBAより高速になるのではないかと思い質問させていただいた次第です。
テーブル1
ID | 区分 | 番号 |
---|---|---|
1 | あああ | 1 |
2 | あああ | 2 |
3 | あああ | 3 |
4 | あああ | 4 |
5 | いいい | 1 |
6 | いいい | 2 |
7 | いいい | 3 |
8 | あああ | 5 |
9 | あああ | 6 |
10 | あああ | 7 |
11 | あああ | 8 |
12 | あああ | 9 |
13 | あああ | 10 |
フォームイメージ
[区分][区分を選択するコンボボックス][検索ボタン]
たとえば、ユーザーが[あ]を選択した場合・・・
サブフォーム(帳票フォーム)
番号1 | 番号2 | 番号3 |
---|---|---|
□No.1 | □No.2 | □No.3 |
□No.4 | □No.5 | □No.6 |
□No.7 | □No.8 | □No.9 |
□No.10 |
※実際には[あ]の中には1~1000程度のデータが有り、縦に一直線に並べると長くなりすぎるので20列程度の二次元に表示することでスクロール量を抑えたいという目的です。
※□はチェックボックスを置き、No.1等のラベルにはハイパーリンクを設定する予定で考えていますので、実装に影響を与えない方法である必要があります。
クエリでは不可能/遅いのでVBAのほうが良いということであれば、バッサリ切っていただいて構いません。
SQLを組む場合のヒントがあれば、教えて頂けると助かります。
補足情報
Access 2016 32bit / Windows10
以下、sazi様のアドバイスを元に追記したもの
理想のクエリの実行結果
選択クエリ
|ID|区分|番号|COL|ROW|
|:--|:--:|--:|
|1|あ|1|1|1|
|2|あ|2|2|1|
|3|あ|3|3|1|
|4|あ|4|1|2|
|5|あ|5|2|2|
|6|あ|6|3|2|
|7|あ|7|1|3|
|8|あ|8|2|3|
|9|あ|9|3|3|
|10|あ|10|1|4|
クロス集計クエリ
ID | 番号1 | 番号2 | 番号3 | CHK1 | CHK2 | CHK3 |
---|---|---|---|---|---|---|
1 | 1 | 2 | 3 | false | false | false |
2 | 4 | 5 | 6 | false | false | false |
3 | 7 | 8 | 9 | false | false | false |
4 | 10 | false |
作成したクエリ
※[区分]をフィルタするパラメータを[P区分]で設定しています。
※クロス集計クエリはまだ動作検証できていません。
実際の実行結果
選択クエリの実行結果
|ID|区分|番号|COL|ROW|
|:--|:--:|--:|
1|あ|1|連番1|1
10|あ|7|連番1|4
11|あ|8|連番2|4
12|あ|9|連番3|4
13|あ|10|連番1|5
2|あ|2|連番2|1
3|あ|3|連番3|1
4|あ|4|連番1|2
8|あ|5|連番2|3
9|あ|6|連番3|3
問題点
・IDが文字列型で出力されてしまう。Intで囲っても変化無しでした。
・IDが連番にならない。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/09/27 09:49 編集
2018/09/27 11:15
2018/09/27 11:21 編集
退会済みユーザー
2018/09/27 13:55
退会済みユーザー
2018/09/27 14:28
2018/09/27 14:45 編集
退会済みユーザー
2018/09/27 15:13
退会済みユーザー
2018/09/27 16:05
退会済みユーザー
2018/09/28 01:40
2018/09/28 02:13
退会済みユーザー
2018/09/28 05:52
2018/09/28 08:46 編集
退会済みユーザー
2018/09/28 08:54