Accessに入れてある楽天の注文データをもとに、運送屋さんの送り状伝票を作ろうと思い立った。
しかし、楽天の注文データは、同一の受注番号で複数の商品に分かれている。
例えば一人の人が3点買い物をしたら、レコードは3つできている。
このレコードを一つにまとめて、商品1、商品2・・・商品9というフィールドにそれぞれ入れたい。
やりたいことはそういうことなのだが、WEBでいろんな知恵をあさっても、なかなか自分のやり方にマッチするものが出てこなかったので、自分で作ってみた。
以下、コード。
Public Function ProdHolizon(ORDERNO As String, NO As Integer) ' '[受注番号] と表示位置(1-10)をキーに商品名を取得し横展開 Dim dbs As Database Dim rst As Recordset Dim strSQL As String Set dbs = CurrentDb strSQL = "SELECT TOP 1 temp1.[商品名] FROM (select top " & NO & " [商品名] from [楽天販売TBL] WHERE [受注番号] = '" & ORDERNO & "' order by [商品名]) AS temp1 ORDER BY temp1.商品名 DESC;" Set rst = dbs.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges) r = DCount("ID", "楽天販売TBL", "[受注番号] = '" & ORDERNO & "'") If NO > r Then ProdHolizon = Null Else ProdHolizon = rst!商品名 End If rst.Close End Function
上記のコードを、クエリの列にセットする。
例えば、以下のように。
商品が1から10までなら、10列分、作る。
引数は、受注番号と注文された商品名のレコード数の2つ。
実行結果は、以下。
結構、簡単にできたかな。