• 締切済み

前のレコードから追加のレコードに自動で写したい

accessの初心者です。コピー用紙の管理を行っております。 A4のコピー用紙を、最新の在庫をA4更新在庫としております。 次のレコードで、更新在庫をA4前在庫という形で、VBAで自動的に写したいのですが、 どのようなプログラムを組めばいいのでしょうか。 初心者なので、最初の方から教えていただければ助かります

みんなの回答

回答No.1

たとえばですが、 テーブル名:tbl 日付:日付時刻型 商品名:テキスト型 出庫数:長整数型 入庫数:長整数型 で、 日付    商品名 出庫数 入庫数 2011/10/01  a    20  100 2011/10/02  a    10   1 2011/10/03  a    10 2011/10/04  a       20 2011/10/01  b       50 2011/10/02  b    10 2011/10/03  b    10 2011/10/04  b       30 2011/10/02  a       19 クエリをSQLビューに切り替えて下記をコピペすると (クエリをデザインビューで開いて右クリックするとコンテキストメニューにあります) SELECT tbl.日付, tbl.商品名, tbl.出庫数, tbl.入庫数, CLng(Nz(DSum("出庫数","tbl","日付 <=# " & [日付] & "# AND 商品名 ='" & [商品名] & "'"),0)) AS 出庫累計, CLng(Nz(DSum("入庫数","tbl","日付 <=# " & [日付] & "# AND 商品名 ='" & [商品名] & "'"),0)) AS 入庫累計, 入庫累計-出庫累計 AS 在庫 FROM tbl ORDER BY tbl.商品名, tbl.日付; で、 このようになります。(レイアウトが崩れてしまうのはご容赦を) (メモ帳にでも張り付けてフォントをP付ではないMSゴシックなどだと見やすいです) 日付    商品名 出庫数 入庫数 出庫累計 入庫累計 在庫 2011/10/01   a   20   100    20   100  80 2011/10/02   a       19    30    120  90 2011/10/02   a   10    1    30   120  90 2011/10/03   a   10        40    120  80 2011/10/04   a       20    40    140  100 2011/10/01   b       50     0    50  50 2011/10/02   b   10        10    50  40 2011/10/03   b   10        20    50  30 2011/10/04   b       30    20    80  60 ではダメかいな? デザインビューに切り替えて確認もできます。 商品(コピー用紙)ごとの在庫なら SELECT Max(tbl.日付) AS 日付の最大, tbl.商品名, SUM(tbl.出庫数) AS 出庫数の合計, SUM(tbl.入庫数) AS 入庫数の合計, 入庫数の合計-出庫数の合計 AS 在庫 FROM tbl GROUP BY tbl.商品名; で、 日付の最大 商品名 出庫数の合計 入庫数の合計 在庫 2011/10/04 a        40     140  100 2011/10/04 b        20     80   60 になります。  何となくですがExcel的な考え方でやっているような雰囲気がします。

yacchan013
質問者

お礼

回答、ありがとうございます。 一度やってみます。 もう一つ教えていただけるのなら、 前日の更新在庫を、自動的に当日の前在庫にでている ようになっている状況が理想なのですが、お教えいただけないでしょうか?

関連するQ&A

専門家に質問してみよう