• ベストアンサー

前のレコードの合計に現レコードの値を加えたいのです。

ACCESSを使っています。 たとえばひとつのレコードに車のデータとして [日付]、[今日の走行距離]、[総走行距離]があるとします。 [今日の走行距離]は入力するとして、[総走行距離] を前に入力した最終日の[総走行距離]に[今日の走行距離] を加えた値を表示できないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

テーブルは[日付]、[今日の走行距離]だけをフィールドとして持ちます。そして名前はtbl1とします。 下のクエリーを使いえば、ご希望の結果になると思います。 SELECT T.日付, T.今日の走行距離, Sum(S.今日の走行距離) AS 総走行距離 FROM tbl1 AS T, tbl1 AS S WHERE T.日付>=S.日付 GROUP BY T.日付, T.今日の走行距離 ORDER BY T.日付; ただしテーブルに同じ日付のレコードが出てこない事が条件です。 なおデーターベースには一般にひとつ前のレコードという概念は無いので、この様な処理は表計算ソフト向きの様な気がします。

ichiro-ichiro
質問者

補足

早速の返答どうもありがとうございます。ですがあまり詳しくないため どのように使用するのかちょっとわかりませんでした。 やりたいことなのですが、 その車を一日に何度も使用します。[使用者],[行き先]等を入力し、 後にいろいろな条件によって表(レポート)を作りたいのです。ですので その時点での[総走行距離]が必要なのです。 エクセルでしたら計算は簡単なのですが…。後にデータをいろいろと 応用できそうだと言う点でアクセスで、と思ったのです。 申し訳ありませんが、もしわかりましたらまたよろしくお願いします。

その他の回答 (2)

回答No.3

>その車を一日に何度も使用します。 でしたら、テーブルに番号というフィールドを設けてください。 その日の何番目の使用かという事を記録します。1日の最初の使用は1、次が2という具合です。日付と番号の両方が同じというレコードは無い様にします。 クエリーは下記のようになります。 SELECT T.日付, T.今日の走行距離, Sum(S.今日の走行距離) AS 総走行距離 FROM tbl1 AS T, tbl1 AS S WHERE T.日付>S.日付 or (T.日付=S.日付 and T.番号>=S.番号) GROUP BY T.日付, T.番号, T.今日の走行距離 ORDER BY T.日付, T.番号; 使用方法ですが、まずAccessのクエリの頁で「新規作成」を実行します。「クエリの新規作成」のダイアログボックスで「デザインビュー」を選んでOK、続いて「テーブルの表示」のダイアログボックスが表示されますが、ここはそのまま「閉じる」を押します。メニューバーから「表示」ー「SQLビュー」を選びます。そこに SELECT; と表示されているのでこれを消して、先ほどのクエリーをここにコピーし、画面を閉じます。変更を保存しますかと聞いてくるのでここは「はい」、クエリーに適当な名前をつけます。 クエリーを開くと、結果が表示されます。このクエリーを基にしてレポートを作成すれば良いと思います。

ichiro-ichiro
質問者

お礼

どうもありがとうございました。丁寧に教えていただき、 これで私の求めていたものができそうです。 本当に勉強になりました。

  • x-game
  • ベストアンサー率42% (80/189)
回答No.1

一つのレコードに総走行距離があるのはおかしくないですか? フィールドとしては,[日付],[今日の走行距離]だけで, 総走行距離は SELECT SUM(field_name) FROM table_name とすれば取得できますよね. 総走行距離をどうしてもそのレコードに入れる必要があるのでしたら 最初に日付の降順に取得して,一番最初のレコードの総走行距離と 今日の走行距離を足したものをUPDATEすればよいと思いますけど, 非常に非効率だと思います.

ichiro-ichiro
質問者

補足

 ありがとうございます。指摘のとおり総走行距離はレコードに、ではなくて レポートに必要なものでした。一日に複数の人間がいろいろなところへ車を 使用するので、そのつどその時点での総走行距離がほしいのです。 そのつど、という部分で躓いています。もしわかったらまたお願いします。

関連するQ&A