人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

≪Access2000≫
添付画像のように、レコードをまとめたいのですが、よい方法はありますか?

・画像は両方とも「テーブル1」になってますが、新しくテーブルを作ってもかまいません。
・VBAでもかまいません。各種アクションクエリでもかまいません。

コメント欄は開けておきます。
不足情報があれば請求してください。
回答のオープンは火曜の朝以降になるかもしれません。

よろしくお願いいたします。

※ 方法がない場合、「なし」の回答はお控えください。回答がつかなければ、方法がないものだと思って諦めます。
※ 回答履歴によっては開きませんのでご了承ください。

1229340822
●拡大する


●質問者: panana
●カテゴリ:コンピュータ
✍キーワード:VBA いもの アクション オープン クエリ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●100ポイント ベストアンサー

もっとスマートな方法があるかもしれませんが、とりあえず結果を別テーブルに格納する例です。

テーブル2に結果を入れるので、このテーブルがすでにあるときはコード内のテーブル2を好きな

名前に変更してください。

Option Compare Database

Const TMP_TABLE = "テーブル2"  '★★★ 結果テーブル名

Sub SELECT_ALL_01()
 Dim RS As DAO.Recordset
 
 readyTempTable
 
 Dim orderNum As String
 Dim productList As String
 
 Set RS = CurrentDb.OpenRecordset("SELECT * FROM テーブル1 ORDER BY 注文番号;")
 Do Until RS.EOF
 If RS!注文番号 <> orderNum Then
 If orderNum <> "" Then
 CurrentDb.Execute ("INSERT INTO " & TMP_TABLE & " ( 注文番号, 商品) VALUES ('" & orderNum & "','" & productList & "');")
 End If
 orderNum = RS!注文番号
 productList = RS!商品
 Else
 productList = productList & "," & RS!商品
 End If
 RS.MoveNext
 Loop
 If orderNum <> "" Then
 CurrentDb.Execute ("INSERT INTO " & TMP_TABLE & " ( 注文番号, 商品) VALUES ('" & orderNum & "','" & productList & "');")
 End If
 
' DoCmd.RunSQL "SELECT * FROM " & TMP_TABLE & " ORDER BY [注文番号];"

 Set RS = Nothing
End Sub



Sub readyTempTable()
 Dim tbl As DAO.TableDef
 Dim str As String
 
 For Each tbl In CurrentDb.TableDefs
 If tbl.Name = TMP_TABLE Then
 CurrentDb.Execute ("DELETE FROM " & TMP_TABLE & ";")
 Exit Sub
 End If
 Next
 CurrentDb.Execute "CREATE TABLE " & TMP_TABLE & " ([注文番号] text(50), [商品] text(200) );"
End Sub

実行後、画面が更新されないことがあるかもしれませんが、F5キーを押して最新情報に更新してみてください。

◎質問者からの返答

回答ありがとうございます。

じっくり読み解こうと思います。


後ほど結果報告します!

----------

・コンパイルエラー ユーザー定義型は定義されていません。

DAOの参照設定をしてなかったです orz


・readyTempTable内が「FROM句の構文エラー」

テーブル名にハイフンが入っているのが問題かな…ということで、

SELECT_ALL_01内のCurrentDb.OpenRecordset部分のテーブル名と

Const TMP_TABLE のテーブル名を[ ]でくくって対応。


内容も理解しようと思ったのですが、使ったことがないものがいっぱいで、

Do Until や If から、「ここではなんとなくこういうことをやっているんだろう」

程度にしかわかりませんでした。


ですが、今後使う機会が増えそうなので、テストデータをいろいろ作って、

ちょっとずつ改変しながら覚えていこうと思います。


ありがとうございました。

気持ち程度ですが、ポイント上乗せしました^^

とても助かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ