ORACLE,VB6を使った家計簿ソフトを作ってます
初めて投稿させていただきます。
プログラム暦半年の者です。
今年の春から未経験でソフト開発の会社で研修を受けたり雑用したりしています。
現在開発言語にVB6.0、データベースにORACLE8を使って個人的に家計簿ソフトを作っています。
コンボボックスやテキストボックスを使い
・登録日
・明細区分(入金or出金)
・グループ(入金→給与,仕送 / 出金→家賃,光熱費)
※別マスター登録プログラム有り
・備考
・金額
を入力し、SPREADシートに追加していき、登録日の入金合計、出金合計、残高を計算して登録するという簡単なプログラムです。
テーブル構成は
M明細区分(detailkbn_no, detailkbn_name)
Mグループ(detailkbn_no, group_no, group_name)
D日付データ
(target_day --登録日,
get_total --入金合計,
spend_total --出金合計,
balance --合計 )
D明細
(target_day --登録日,
detail_no --明細No,
detail_kbn --明細区分No,
group_no --グループNo,
note --備考,
amount --金額 )
という感じです。
メインのフォームでは
D日付データ
D明細
にデータを登録するのですが,残高の計算は現在
前登録日残高 + (現登録日入金合計 - 現登録日出金合計)
としています。
しかしこれでは残高が過去の残高に依存しているので、過去の残高を修正したり過去のデータを登録したりすると現在のデータが変わってしまいます。
こーいう場合はどのように処理したらよいのでしょうか??
過去の残高を修正した場合はそれ以後のデータの残高を一つ一つ再計算して登録し直すしかないのでしょうか??
(データ件数が増えた場合に非常に時間がかかってしまいそうです…)
データベース上で一発でそれ以降のデータの残高を書き換えるなんてことは不可能なのでしょうか??
そもそもD日付データテーブルに残高というフィールドをもたせたことに無理があるのでしょうか??
(登録日でグループ化したSUM(入金合計)-SUM(出金合計)を残高として表示させるだけにするとか…)
長々と申し訳ありませんでした。
説明が足らない部分も多々あるとは思いますが理解できる範囲で結構ですのでどなたかご教授いただけると助かります。
よろしくお願いします。