Microsoft Access 掲示板

預り金の残額などを一目でわかるようにしたい

4 コメント
views
4 フォロー

業務上、人のお金を預りそのお金を複数に支払うようなことをしているのですが、誰から幾ら預かって、その内幾らを誰に支払って、残額は幾らかを一目でわかるようなDBを作りたいです。

例: A氏から10,000円預り、5,000円を支払った。残額は5,000円である。次にB氏から50,000円預かり、10,000円を支払った。残額は40,000円である。その後A氏の残額5,000円から3,000円を支払って残額は2,000円である。現時点では、A氏からの預り金残額は2,000円、B氏からの預り金残額は40,000円である。(もし、残額が0円になったら表示一覧から消したい)

こんな事はAccessでできますでしょうか?

初心者
作成: 2019/11/05 (火) 13:44:09
通報 ...
1

可能です。

どのように設計するかですが、Accessはデータベースソフトですので、データをため込んで、必要に応じて、必要なデータを、必要な形に加工して出力する、ということをするものです。

まず、最初に考える必要があることは、どのようなデータをどのうような形でため込むか、です。ため込む場所はテーブルです。ですので、テーブルの設計から始めます。

データを加工して出力するのはクエリだったり、フォームだったり、レポートということになります。しかし元のデータがしっかりしたものでないと自由に加工できません。

呈示の情報から必要なデータは、最低限下記の3つになります。

  • お金を借りる相手の情報(氏名)
  • 取引日付
  • 取引金額

金額に関しては、預かり金額、支払い金額 と2つのフィールドに分ける方法と、
一つのフィールドで預り金はプラス、支払いはマイナスとする方法が考えられます。

このお金の出し入れの履歴を逐一ため込んでいく形になります。

この履歴テーブルの他に、
お金を借りる相手の情報が氏名だけでなく、連絡先など別に必要なら、
相手先情報のマスターテーブルも必要になります。

テーブルの設計には「正規化」という原則があり、それに沿った設計にしないとデータベースとしては使いものにならないものになります。ただ、かなり奥が深く理解するには敷居が高いものなので、これはおいおい勉強していくといいでしょう。

前置きが長くなりましたが、まずは質問内容を一番シンプルな形でテーブルにすると、下記のようなものになります。
 
テーブル名 取引履歴

フィールドデータ型主キー
取引IDオートナンバー型
取引日付日付/時刻型
取引相手短いテキスト
取引金額通貨型
 
データ例
取引ID取引日付取引相手取引金額
111/01A氏10000
211/02A氏-5000
311/02B氏50000
411/03B氏-10000
511/04A氏-3000
 
上記のようにテーブルに入力して、現時点での預り金残額は、集計クエリで、
取引相手でグループ化して、取引金額を合計にすれば、下記のような出力が得られます。
取引相手預り金残高
A氏2000
B氏40000
2
初心者 2019/11/05 (火) 15:59:17 50a82@06c9f

hatenaさま
早速のご回答ありがとうございます。大変丁寧な説明で分かり易いので助かります。
テーブルとデータ例は理解できました。多分テーブルに備考などを付け加えれば
イメージしている処理ができそうです。

集計クエリについてですが、残高だけを表示せずにA氏履歴とB氏履歴に分けて
残高が0になるまでを行をわけて表示することは可能でしょうか?(0になったら非表示)

3

集計クエリについてですが、残高だけを表示せずにA氏履歴とB氏履歴に分けて
残高が0になるまでを行をわけて表示することは可能でしょうか?(0になったら非表示)

このような出力はレポートを使うと簡単に見やすく作ることができます。

履歴テーブルを選択しておいて、レポートウィザードでレポートを作成します。
「グループレベルを設定してください」のところで「取引相手」を選択します。
次の並べ替えを指定するところで、「取引日付」の昇順に設定します。
次でレイアウトを「表形式」を選択します。
あとレポート名を設定して完了をクリックで雛形が完成します。

デザインビューで開いて、詳細セクションにテキストボックスを配置して、その設定を下記のようにします。

コントロールソース 取引金額
集計実行 グループ全体

これで相手先ごとにグループ化されて、各行ごとに残高が表示されます。

4
名前なし 2019/11/05 (火) 19:35:29 a8f7f@79499

hatenaさま
度々のご回答ありがとうございます。
教わったことをベースに一度作ってみたいと思います。
ありがとうございました。