- ベストアンサー
クエリーで前のレコードのフィールドを参照して計算する方法
+--+-----------+-----------+ |ID|フィールドA|フィールドB| +--+-----------+-----------+ |_1|___________|_________あ| +--+-----------+-----------+ |_2|_________い|_________う| +--+-----------+-----------+ |_3|_________え|_________お| +--+-----------+-----------+ 「あ」の値 と 「い」の値を足したものを「う」に 「う」の値 と 「え」の値を足したものを「お」に という具合に計算したいのですが、クエリーで可能なのでしょうか。教えてください。 VLOOKUP関数でできるようなのですが循環参照エラーが出てうまくいきません。フィールドBの式は フィールドB: DLookUp([フィールドB],"クエリ","ID=" & [ID]-1)+[フィールドA] にしています。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
1. 入庫、出庫用のフォームからVBAで在庫テーブルをその都度更新する. 2. 入庫、出庫用のフォームでトランザクション・テーブルに追加していき、最後に更新クエリかVBAで更新する。 3. OCRかなにかで入出庫伝票をまとめて電子データ化してインポートのうえ、更新クエリかVBAで更新。 のどれかでしょう。 棚卸しも同様に、棚卸しデータを電子データ化してインポートし更新ですね。 棚卸しデータを1アイテム毎にフォームから入力ではツライでしょうから...
その他の回答 (3)
> エクセルに慣れている私は、アクセスでこんなことができないのかと感じてしまいました。 ソフトの目的が違いますので... これを言われてしまうと。「ダンプカーはなぜ時速300Kmでないんだ!」と聞かれているようで...
お礼
ありがとうございます。 そうなんですよね。書いている自分もそう思います。 具体的には在庫量の確認がしたいのですが、納品の場合プラス、出庫の場合マイナス、また棚卸した場合はその数ズバリを代入して、次回からはその棚卸数にプラスマイナスしたいと思っています。どうも我ながらソフトの使い方が根本的に間違っているようです。こういうことはどうやってするのでしょうか。更新クエリを使うのでしょうか?
> 循環参照エラーが出てうまくいきません。 > フィールドB: DLookUp([フィールドB],"クエリ","ID=" & [ID]-1)+[フィールドA] の「クエリ」の部分が自分自身を参照しているからでしょう。 もとのテーブルを指定すれば良いのでは? 「[ID]-1」と指定しているので、抽出結果ではないと判断します。 表示だけでいいのなら、 DSum("フィールドA","テーブル名","ID <= " & [テーブル名]![ID]) とか...
お礼
ありがとうございます。累計を求めるのと同じなのでDsum関数でできることは分かりました。が、エクセルに慣れている私は、アクセスでこんなことができないのかと感じてしまいました。出来れば応用範囲が広がると思います。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
「う」の更新が終わらないと、 「お」を更新することができませんから 1つずつやっつけていくしかない(クエリーではできない)ような気がします。
お礼
ありがとうございます。 やはり無理なんでしょうか。アクセスは最近勉強しだしましたが、エクセルに慣れた私はこんな計算すらアクセスに出来ないのかと疑問に思ってしまいます。
お礼
ご丁寧にありがとうございます。 いただいたアドバイスを元にトライしてみます。