気がつけば6月は何も書いてなかった気がする。
ツイッターでつぶやいてたからかな~。
アップしたい画像は有るんだけど、携帯にデータがあるから移動させる必要があるしな~とか考えてたら、何も書いてなかった。
さてさて、今日も忘れないようにメモメモ・・・
ACCESSで残高フィールドを作成して、入出金の残高金額を保存する方法について記述してみよう。
基本的に、ACCESSには「前のレコード」という概念が存在しないので、Excelみたいに今のセル番地から1行上のセルを参照って事が簡単にはできない。
そこで、クエリの抽出条件に式を複合させて強引に前の残高を参照するようにする。
まずは、テーブルの作成。
ここは何も気にせずに普通にテーブルを作成し、
ちゃんと残高のフィールドも用意しておく。
今回は、金額に関して試しなので数値で設定したが、
実際には「通貨」で設定しても問題ないだろう。
次にクエリの作成。
ここでは、作成したテーブルの全フィールドを登録する。
ただ、最後に「計算」(名前はなんでも良いし、使う意味的には参照とかの方が正しいきがするが、ま~無視無視。)という演算フィールドを作成する。
作成した演算フィールドには、次のような式を記述する。
計算: IIf([ID]<>DMin(“ID”,”T入出金”),DLookUp(“残高”,”T入出金”,”ID=” & DMax(“ID”,”T入出金”,”ID<” & [ID])),”")
う~ん、長い!
if条件式(ACCESSではIIfと書く)を使って、最初のレコードでエラー表示が出ないための工夫をしたりしてるので、余計に長くなっているが、基本的には、現在のレコードのID番号より小さい値の中で最大値のレコードを参照し(DMax)、そのレコードの残高のフィールドを参照(DLookUp)する。という意味になる。
これにより、残高を取得することが出来る。
じゃぁ、今度は見た目ということでフォームの作成。【F入出金】
フォームは、作成したクエリを元に作成し、表形式で表示する。
で、クエリで作成した「計算」の演算フィールドは、表示する必要はないので、可視を「いいえ」に設定して非表示にしておく。
これで、まず第1段階終了。
次に、ボタンを作成する。
このボタンの役目は、ボタンをクリックした時に、 「計算(前の残高の値を参照)」に「入金」を足して「出金」を引いた値を 「残高」のフィールドに代入するようにするためのもの。
そこで、ボタンを作成できたら、マクロを使い、値の代入を用意する。
アイテム:[Forms]![F入出金]![残高]
式:[Forms]![F入出金]![計算]+[Forms]![F入出金]![入金]- [Forms]![F入出金]![出金]
これをフォームのボタンをクリックした時の実行内容としてイベントに登録すると完了。