No| 製品| 金額|
10| 鉛筆|100|
10| のり| 50|
20| 鉛筆|100|
30|絵の具|300|
30|ノート|150|
30| 定規| 80|
30|ハサミ|500|
↓
No|製品1|金額1|製品2|金額2|製品3|金額3|製品4|金額4|製品5|金額5|
10| 鉛筆|100| のり| 50| | | | | | |
20| 鉛筆|100| | | | | | | | |
30|絵の具|300|ノート|150| 定規| 80|ハサミ|500| | |
(Noと金額は半角です。)
のようにデータを結合したいのです。(一つのフィールドに一つの製品、金額)
製品、金額は1から順番に左詰にします。
結果はレポートではなくテーブルで・・・
クエリーで簡単に処理したいのですが、無理ならモジュールで記述してもOKです。
使用しているデータベースソフトはAccess2000です。
実際凄く困っています。できれば早急にご返事いただければ幸いです。
よろしくm(._.)mお願いします。
No.4ベストアンサー
- 回答日時:
モジュールでやるとこんな感じです。
DoCmd.RunSQL "DELETE T_結合.* FROM T_結合;"
Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim RS2 As ADODB.Recordset
Dim 退避ナンバー As Long
Dim カウント As Integer
Set CN = CurrentProject.Connection
Set RS = New ADODB.Recordset
Set RS2 = New ADODB.Recordset
RS.CursorLocation = adUseClient
RS.Open "T_製品", CN, adOpenKeyset, adLockOptimistic
RS2.Open "T_結合", CN, adOpenKeyset, adLockOptimistic
RS.Sort = "ナンバー ASC"
RS.MoveFirst
カウント = 1
Do Until RS.EOF
退避ナンバー = RS!ナンバー
RS2.AddNew
RS2!ナンバー = RS!ナンバー
Do Until 退避ナンバー <> RS!ナンバー
RS2("製品" & カウント) = RS!製品
RS2("金額" & カウント) = RS!金額
カウント = カウント + 1
RS.MoveNext
If RS.EOF Then Exit Do
Loop
RS2.Update
カウント = 1
Loop
RS.Close
RS2.Close
CN.Close
End Sub
テーブルは下記状況で作成しました。
・T_製品
ナンバー 数値型
製品 テキスト型
金額 通貨型
・T_結合
ナンバー 数値型
製品1 テキスト型
金額1 通貨型
:
:
製品10 テキスト型
金額10 通貨型
上記モジュールを何かのイベントで動かしてください。
(クリック時とか)
モジュール以外で自動で行うのは結構大変かも。
ありがとうございました。うまくでき、今後の参考にもなり勉強にもなりました。
>Set CN = CurrentProject.Connection
>Set RS = New ADODB.Recordset
>Set RS2 = New ADODB.Recordset
>RS.CursorLocation = adUseClient
>RS.Open "T_製品", CN, adOpenKeyset, adLockOptimistic
>RS2.Open "T_結合", CN, adOpenKeyset, adLockOptimistic
>RS.Sort = "ナンバー ASC"
>RS.MoveFirst
>カウント = 1
>Do Until RS.EOF
↑
ちょっと意味がわからないのですが・・・
No.5
- 回答日時:
長いですが動作確認済みです、以下のクエリでどうでしょうか。
--------------------------------------------
select [No]
,max(製1) as 製品1
,max(金1) as 金額1
,max(製2) as 製品2
,max(金2) as 金額2
,max(製3) as 製品3
,max(金3) as 金額3
,max(製4) as 製品4
,max(金4) as 金額4
,max(製5) as 製品5
,max(金5) as 金額5
,max(製6) as 製品6
,max(金6) as 金額6
,max(製7) as 製品7
,max(金7) as 金額7
,max(製8) as 製品8
,max(金8) as 金額8
,max(製9) as 製品9
,max(金9) as 金額9
,max(製10) as 製品10
,max(金10) as 金額10
into [結果テーブル]
from (select [No]
,iif([順序]=1,[製品],null) as 製1
,iif([順序]=1,[金額],null) as 金1
,iif([順序]=2,[製品],null) as 製2
,iif([順序]=2,[金額],null) as 金2
,iif([順序]=3,[製品],null) as 製3
,iif([順序]=3,[金額],null) as 金3
,iif([順序]=4,[製品],null) as 製4
,iif([順序]=4,[金額],null) as 金4
,iif([順序]=5,[製品],null) as 製5
,iif([順序]=5,[金額],null) as 金5
,iif([順序]=6,[製品],null) as 製6
,iif([順序]=6,[金額],null) as 金6
,iif([順序]=7,[製品],null) as 製7
,iif([順序]=7,[金額],null) as 金7
,iif([順序]=8,[製品],null) as 製8
,iif([順序]=8,[金額],null) as 金8
,iif([順序]=9,[製品],null) as 製9
,iif([順序]=9,[金額],null) as 金9
,iif([順序]=10,[製品],null) as 製10
,iif([順序]=10,[金額],null) as 金10
from (SELECT (select count(*) from tableA as Sub where main.no = sub.no and main.製品>sub.製品)+1 AS 順序
,*
FROM tableA AS Main) as tableB) as tableC
group by [No]
-----------------------------------------
3つのクエリを無理やりひとつにしています。
レスポンスが悪い場合は適宜分割してください。
結果の列数は製品10までの固定です。列が可変の場合はAccessのクエリでは無理ですね(たぶん)。
No.3
- 回答日時:
再びstorkです。
遅くなってすみません。テーブルが100件程度で、結果の列数も固定だと言うことで、テーブルに製品番号カラムを追加し、番号を手作業で振って、結果テーブルにinsertしていくのはいかかがでしょうか。
順を追って説明すると、
1.テーブルに列を追加。列名:製品番号
2.列:製品番号に番号を振る。(製品1なら1)
3.結果セットを入れるテーブルを作る
4.結果テーブルにナンバーを振っておく
5.更新クエリを使用して結果セットに値を入れる。
SQLはこんな感じ
update tableA inner join tableB
on tableA.No = tableB.No
set tableB.製品1 = tableA.製品
tableB.金額1 = tableA.金額
where tableA.製品番号 = 1
これを番号を変えて10回実行する。
面倒臭いですかね.....。
モジュールを記述するより簡単だと思いますが。
解答ありがとうございます。
番号を手作業で振るということですが、処理を自動化にしたいので自動的に番号を振る方法はないですか?(すいません私の説明が不足していたようで・・・)
No.1
- 回答日時:
Accessならばクロス集計クエリというのがあります。
これなら、希望されていることができると思います。
結果はテーブルでというのが気になりますが、参照ならクエリでは・・・
テーブルにしたいのであれば、それにさらに、テーブルを作成するモジュールを組み合わせ、追加クエリでということになると思います。
早速のご回答ありがとうございます。
ですが、以前クロス集計したらうまくできませんでした。
どの項目を行見出し、列見出し、値と指定するか詳しく教えてくださると助かります。宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ヤフオク! 関税 詐欺でしょうか?ヤフオク 3 2023/06/25 11:22
- 流行・カルチャー 今の時代 白物家電は別に凄い買い物でもなく。 安価な商品から高額まで。 ハードを売りにしていた 時代 2 2022/12/20 21:03
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- 損害保険 現在20歳で大学で保険法を履修している者です。 過去問に取り組んでいるのですが、答えがわからず苦戦し 1 2023/07/22 19:42
- 財務・会計・経理 2級工業簿記 外注加工賃について 外注加工賃の請求額は未払金勘定科目で処理するんですか? あと、「下 1 2022/05/20 21:13
- Visual Basic(VBA) データを製品別に集計 3 2022/09/11 21:17
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- 掃除機・クリーナー・空気清浄機 空気清浄機 3 2023/07/22 14:23
- DIY・エクステリア こちらは新品で発注したグリドルです。 到着時からこのような素人目で見ても分かるような作業の粗さで、こ 1 2023/03/02 22:57
- その他(保険) シャープと共同開発した「BCG高性能JH-WB182Eの保証書」に関しての疑義 3 2023/05/22 15:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
Accessを開きなおすとテキスト...
-
エクセルのフィルタ抽出が固まる
-
ACCESSのSQLで、NULLかNULLでな...
-
テキストで空欄(null?)を検索...
-
帳票フォームでのあるコンボボ...
-
更新クエリをリンクデータベー...
-
CSVファイルでテキストの改行の...
-
警察はスマホに保存した動画や...
-
式を簡単にしてください。ACCES...
-
Accessフォームからパラメータ...
-
顧客データベースを作る場合、...
-
テーブル1 2 3 の結合
-
QRコードとバーコードについて
-
縦書きテキストボックスの表示"...
-
シートが異なるセル同士を、相...
-
DocuWorksでの印刷
-
Accessのフォームへ、記録者の...
-
旧filemakerで和暦(令和など)...
-
Access クエリ上で表示させた割...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複した複数データを一つのレ...
-
sever2000使用時に検索がひっか...
-
Accessの表結合SQL
-
抽出が出来ないくらい遅いクエリ
-
Pro*C桁うめについて
-
外部結合
-
postgres 外部結合(AからB、Bか...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
-
Accessでテーブルの値をテキス...
-
Access テキスト型に対する指定...
-
Accessのフィールド数が255しか...
-
Accessでコードを入れると名前...
-
Oracle 2つのDate型の値の差を...
-
作番ってどういう意味でしょうか?
-
ACCESSのクエリで集計で、先頭...
-
変数が選択リストにありません
-
テーブルの存在チェックについて
おすすめ情報