• 締切済み

アクセス初心者です!

アクセス初心者です! アクセスでどうしてもわからないことがあるので教えてください! 仕事上でラベルを作成することがあるんですが、例えば林檎が255個あった場合、 50個のラベルを5枚、 5個のラベルを1枚、作成する必要があります。 ただし送られてくるデータ上では255個の林檎が1点となっています。 これを分割して林檎50個のデータが5件、 林檎5個のデータが1件の合計6件にした上で 5個のデータのみレポートに出力してラベルを作成したいです。(50個のラベルはあらかじめ作成できるため必要ないです。) また、それをできる毎回できるようにフォーム上にボタンを設置しデータをインポートすれば毎回ラベルを作成できるようにしたいです。 また、参考になるサイトがあったら教えてください! ややこしくてすみません、よろしくお願いいたします!

みんなの回答

  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.2

> 50個ずつと端数のデータも作りたい場合は > どのようにしたらできますでしょうか? 質問の添付画像にある「(2)こうしたい」の状態ですよね 他のやり方があるかもしれませんがとりあえず 作成の標準モジュールで出た画面に以下のコードをコピペしてください テストクエリ(変更しなければ)というクエリ(適当な選択クエリでも)を作成してから実行してください。 テーブルやフィールド名は実際のテーブル名やフィールド名に変更してください。 testやテストクエリは好きな名前にしてください。 Public Function test() Dim db As Database, rs1 As Recordset Dim i As Long Dim mySQL As String Set db = CurrentDb Set rs1 = db.OpenRecordset("テーブル", dbOpenTable) mySQL = "" rs1.MoveFirst Do Until rs1.EOF For i = 1 To Int(rs1![数量] / 50) mySQL = mySQL & "SELECT 商品名, 50 AS 数量, 納期 FROM " & rs1.Name & _ " WHERE (商品名)='" & rs1![商品名] & "';" & _ vbCrLf & "UNION ALL" & vbCrLf Next If rs1![数量] Mod 50 > 0 Then mySQL = mySQL & "SELECT 商品名, " & rs1![数量] Mod 50 & " AS 数量, 納期 FROM " & rs1.Name & _ " WHERE (商品名)='" & rs1![商品名] & "';" & _ vbCrLf & "UNION ALL" & vbCrLf End If rs1.MoveNext Loop mySQL = Left(mySQL, Len(mySQL) - 11) CurrentDb.QueryDefs("テストクエリ").SQL = mySQL DoCmd.OpenQuery "テストクエリ" Set rs1 = Nothing Set db = Nothing End Function

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.1

端数のレポートを出したいという事だと思うので50というデータはいらないと思いますから 選択クエリで添付画像のようなものを作成してそれをもとに端数のレポートを作成したらいかがですか。 商品名の右のフィールドは 端数: [数量] Mod 50 抽出条件は <>0 になっています。 あとは、ボタンを作成して該当のレポートを開くとかにしておくと端数だけのレポートが開きます。

asakifate
質問者

補足

ご回答ありがとうございます! 試してみます! 追加の質問で大変恐縮なのですが、 50個ずつと端数のデータも作りたい場合は どのようにしたらできますでしょうか? お手数おかけして申し訳ございません!

すると、全ての回答が全文表示されます。

関連するQ&A