プロが教えるわが家の防犯対策術!

アクセスの関数(残高計算)について教えてください。
金銭管理表を作成し、残高を表示したいのですが、個別に集計してしまうと上手く残高が表示されません。 
最初にテーブルにてID(オートナンバー)、氏名(Aさん)、月日、適用、入金額、出金額、
2行目にBさん、3行目にAさん、4行目にAさん、5行目にBさん、6行目にBさん、
7行目にCさん・・・・・ とデーターを入力しました。そしてクエリにてテーブルを利用して残高を計算しました。
クエリのフィールドは新たに残高(計算式を入力)を作ったので、ID(オートナンバー)、氏名、月日、適用、入金額、出勤額、残高: CCur((NZ([入金額])+NZ(DSum("入金額","テーブル","ID<" & [ID])))-(NZ([出金額])+NZ(DSum("出金額","テーブル","ID<" & [ID])))) のようになっています。
さてこの段階では残高計算は上手くいきました。しかしながら目的の個別集計、たとえばAさんだけを抽出して残高を計算するにはなっていません。したがって、これを抽出条件で氏名をAさんと入力して絞り込んで残高を計算させると、残高の計算がうまくいかなくなってくるのです。
残高の計算式をどのように変更すればよいのかどなたか教えてください。どうぞ宜しくお願いいたします。

ID 氏名 月日  適用  入金額 出金額  残高
1 Aさん 5/01 文房具.........\0.........\300.......-\300
2 Bさん 5/03 食料品.........\0.........\500.......-\800
3 Aさん 5/04 入金........\1000...........\0.........\200
4 Aさん 5/10 CD.............\0.........\500.......-\300
5 Bさん 5/01 入金........\1000...........\0.........\700
6 Aさん 5/04 お菓子.........\0.........\200.........\500
7 Cさん 5/08 入金.........\500...........\0........\1000

残高はうまく計算されているが、個別に残高が集計されていません。
これをAさんだけを抽出条件で抽出すると

ID 氏名  月日  適用  入金額 出金額  残高
1 Aさん 5/01 文房具.......\0........\300.......-\300
3 Aさん 5/04 入金......\1000..........\0.........\200
4 Aさん 5/10 CD...........\0........\500.......-\300
6 Aさん 5/04 お菓子.......\0........\200.........\500

となってしまい、残高が個別計算されなくなってしまいます

A 回答 (2件)

今晩は。



データからAさんの入出金と残高の整合性が表示できれば良いなら、
こんな感じです。
以下のSQL文をクエリのSQLビューに貼り付けてください。

SELECT T1.氏名, T1.月日, T1.適用, T1.入金額, T1.出金額, (SELECT sum(入金額-出金額) as 残高 FROM T1 AS TZ WHERE 氏名 = 'A' AND TZ.ID <= T1.ID) AS 残高
FROM T1
WHERE T1.氏名='A';


※テーブル名、氏名の"A"は適当置き換えてください。
※DB値のNULLについては、考慮してません。(NZ())などで対処してください。
    • good
    • 0
この回答へのお礼

今回のアドバイスをきっかけにSQL文を勉強することができました。ありがとうございました。

お礼日時:2007/06/16 15:31

氏名も条件に加えてやらなきゃだめですね



残高: DSum("Nz([入金額],0)-Nz([出金額],0)","テーブル","ID<=" & [ID] & " and 氏名='" & [氏名] & "'")

だけどID順だけでいいいの?
日付順、日付が同じならID順とするところでは?

残高: DSum("Nz([入金額],0)-Nz([出金額],0)","テーブル","([月日]<#" & [月日] & "# or 月日=#" & 月日 & "# and ID<=" & [ID] & ") and 氏名='" & [氏名] & "'")
    • good
    • 0
この回答へのお礼

とても役に立ちました。ありがとうございました。

お礼日時:2007/06/16 15:28

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