アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESSを使っています。
たとえばひとつのレコードに車のデータとして
[日付]、[今日の走行距離]、[総走行距離]があるとします。

[今日の走行距離]は入力するとして、[総走行距離]
を前に入力した最終日の[総走行距離]に[今日の走行距離]
を加えた値を表示できないでしょうか。

A 回答 (3件)

テーブルは[日付]、[今日の走行距離]だけをフィールドとして持ちます。

そして名前はtbl1とします。
下のクエリーを使いえば、ご希望の結果になると思います。

SELECT T.日付, T.今日の走行距離, Sum(S.今日の走行距離) AS 総走行距離
FROM tbl1 AS T, tbl1 AS S
WHERE T.日付>=S.日付
GROUP BY T.日付, T.今日の走行距離
ORDER BY T.日付;

ただしテーブルに同じ日付のレコードが出てこない事が条件です。
なおデーターベースには一般にひとつ前のレコードという概念は無いので、この様な処理は表計算ソフト向きの様な気がします。

この回答への補足

早速の返答どうもありがとうございます。ですがあまり詳しくないため
どのように使用するのかちょっとわかりませんでした。

やりたいことなのですが、
その車を一日に何度も使用します。[使用者],[行き先]等を入力し、
後にいろいろな条件によって表(レポート)を作りたいのです。ですので
その時点での[総走行距離]が必要なのです。

エクセルでしたら計算は簡単なのですが…。後にデータをいろいろと
応用できそうだと言う点でアクセスで、と思ったのです。

申し訳ありませんが、もしわかりましたらまたよろしくお願いします。

補足日時:2002/03/29 18:40
    • good
    • 0

>その車を一日に何度も使用します。


でしたら、テーブルに番号というフィールドを設けてください。
その日の何番目の使用かという事を記録します。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; と表示されているのでこれを消して、先ほどのクエリーをここにコピーし、画面を閉じます。変更を保存しますかと聞いてくるのでここは「はい」、クエリーに適当な名前をつけます。
クエリーを開くと、結果が表示されます。このクエリーを基にしてレポートを作成すれば良いと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/03/30 10:34

一つのレコードに総走行距離があるのはおかしくないですか?


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

この回答への補足

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

そのつど、という部分で躓いています。もしわかったらまたお願いします。

補足日時:2002/03/29 18:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A