現金出納帳をAccessで作ってみます。
一番簡単なものを作るので、テーブルは一つだけ。
次のようにテーブルの設定をして下さい。
クエリの設定をします。
一番難しいところが残高の計算でしょうか。
残高はDSum関数を使います。
DSum(フィールド, テーブル又はクエリ, 条件)
最初にどこのテーブル又はクエリのデータを集計するのか決めます。
今回はこのクエリを集計するので、テーブル又はクエリ名は、「クエリ1」
次に集計するフィールドですが、入金と出金の合計を出したいので、
「入金」・「出金」を選びます。
一番ややこしいのは条件です。
最初にどういう条件で並べ替えするか考えます。
現金出納帳なので、日付順・ID順で並べかえたいところです。
ですので、一つのデータにまとめます。
これが、クエリの「表示順」です。
表示順: [日付] & Format([ID],”0000″)
日付にIDが4ケタになるように書式を変更したものをくっつけました。
書式を変更する理由は、テキスト文字の世界では、
1と2は2の方が大きいです。
2と11では2の方が大きいです。
最初の文字で判断するので、敢えて4ケタに変換しています。
つまり同じ日付であれば、入力順に並べ替える設定です。
Nz(DSum(“入金”,”クエリ1″,”表示順<='" & [表示順] & "'"))
→クエリ1で表示順がこのデータ以前の順番の入金の合計
ちなみに表示順が二つありますが、[]のついている方は現在参照しているデータで、
[]が付いていない方は、フィールド名を指します。
IDが4のときは、表示順が2013/6/130004以下の表示順の入金の合計を出します。
同様に出金の合計を出します。
入金と出金の合計を出してそれを差引すれば残高が出るという仕組みです。
もし日付が前後した場合は、更新をクリックすると日付順に並べ替えます。
Excel的考えだと、一つ前のセルを足し引きすればいいじゃんと思うのですが、Accessではそもそも
セルという概念がないので、そのデータの前のすべての入金の合計と、出金の合計を出して、残高を出す
という処理をしなければ残高はでません。