質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

2回答

982閲覧

Access テーブルのカラムのデータ内容で分割したテーブル作成

satomidon

総合スコア4

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/02/15 03:08

動的変動するカラム内容で分割したテーブルを作成したいです。

下図テーブル「T_売上」を「生産物」で分割して、「野菜」・「果物」の新しいテーブルを作りたいのですが
「生産物」の内容は動的に変動し、何が投入されてくるかがわからず
前もってテーブル作成クエリに「野菜」「果物」などを仕込むことができません。

実現可能であれば、やり方をご教示いただけますでしょうか?
宜しくお願いいたします。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

「T_売上」を「生産物」で分割して、「野菜」・「果物」の新しいテーブルを作りたい

何故ですか?
生産物を条件にして抽出するクエリーで事足りると思いますけど?

「生産物」の内容は動的に変動し、何が投入されてくるかがわからず

という事なら、「T_売上」の「生産物」をgroup byした結果リストから選ばせるようにすれば良いかと思いますし、そもそも何が来るか分からずに作成したテーブルにどうやってアクセスするつもりですか?

投稿2020/02/15 04:00

sazi

総合スコア25206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

何が入ってくるかわからないんだとすれば、パラメータクエリを作成すればいいのではないでしょうか?
それともその都度任意で生産物を指定するのではなく、何かを実行した時に”T_売上”の生産物の全てのテーブルを作成したいという事でしょうか?
後者の場合だと、T_売上から生産物のパターンをクエリで抽出して、VBAでそのパターンの数だけテーブルを作成するクエリを動的に作成するしかないと思います。
他のDBだとSQLのカーソルで1レコードずつ動的に処理をさせられますが、Accessの場合はカーソルが使えない代わりにVBAがあるのでそちらを使うことになると思います。


追記

VBA

1Sub test() 2 Dim dbRes As Recordset 3 Dim strSeisanbutu As String 4 Dim strInstQuery As String 5 6 Set dbRes = CurrentDb.OpenRecordset("select distinct 生産物 from T_売上") 7 8 DoCmd.SetWarnings False 9 10 Do Until dbRes.EOF 11 strSeisanbutu = dbRes.Fields(0).Value 12 13 strInstQuery = "select * " _ 14 & "into " & strSeisanbutu & " " _ 15 & "from T_売上 " _ 16 & "where 生産物=""" & strSeisanbutu & """" 17 18 DoCmd.RunSQL strInstQuery 19 20 21 22 dbRes.MoveNext 23 Loop 24 25 DoCmd.SetWarnings True 26End Sub

とりあえず、こんな感じでしょうか?
実行すれば生産物の種類だけテーブルが作成されます。
ただ、ほぼ無作為のように作られたテーブル群をどうやって管理するんでしょうか?
100種類の生産物があれば、100個のテーブルが作成されることになります。
おまけにテーブルを作成したらテーブルにアクセスするクエリも動的に書かないといけないと思いますが。

投稿2020/02/15 03:22

編集2020/02/15 04:15
yuuskeccho

総合スコア97

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

satomidon

2020/02/15 03:33

Yuusukecchoさま 早速のご回答ありがとうございます。 はい、コマンドボタンをクリックした時に、”T_売上”の生産物の全てのテーブルを作成したい、です。 T_売上から生産物のパターンを作るところまではできそうですが、その後の「VBAでそのパターンの数だけテーブルを作成するクエリ」がわからず、お尋ねする次第です。 宜しくお願いいたします。
yuuskeccho

2020/02/15 04:17

上にコード追記しましたが・・・。 ↓でsaziさんも書かれていますが、どうやって管理するんでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問