ORACLE,VB6を使った家計簿ソフトの開発 - 家計を管理するための簡単なプログラム

このQ&Aのポイント
  • ORACLE,VB6を使って家計簿ソフトを開発しています。コンボボックスやテキストボックスを使って登録日、明細区分、グループ、備考、金額を入力し、SPREADシートに追加していきます。また、登録日の入金合計、出金合計、残高を計算して登録します。過去の残高の修正やデータの登録によって現在のデータが変わってしまう問題についても悩んでいます。
  • 過去の残高修正によって現在のデータが変わる問題について、どのように処理すればよいのか悩んでいます。過去の残高を修正した場合、それ以降のデータの残高を一つ一つ再計算して登録し直す必要があるのでしょうか?データベース上で一括で残高を書き換える方法はあるのでしょうか?また、D日付データテーブルに残高を持たせるのが適切なのかも検討したいです。
  • ORACLEとVB6を使って家計簿ソフトを開発しており、登録日、明細区分、グループ、備考、金額を入力し、SPREADシートに追加しています。また、登録日の入金合計、出金合計、残高を計算して登録します。問題として、過去の残高修正によって現在のデータが変わることがあるため、どのように処理すればよいのか悩んでいます。一括で残高を書き換える方法や、D日付データテーブルに残高を持たせるべきかも検討したいと考えています。
回答を見る
  • ベストアンサー

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(出金合計)を残高として表示させるだけにするとか…) 長々と申し訳ありませんでした。 説明が足らない部分も多々あるとは思いますが理解できる範囲で結構ですのでどなたかご教授いただけると助かります。 よろしくお願いします。

  • Oracle
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.1

 構造は、使い方に依存すると思うので、考え方のみ。  まず、データと現実をどのように整合さしているかがひとつのポイントになると思います。  たとえば、昨日のデータを昨日登録したとします。登録した限りは、現実のお財布の中身は、データとあっていたはずです。(たとえダミーを入れようが使途不明金で計上しようが、あっていなきゃおかしいですよね。)  そして、今日のデータを入力します。当然、やはり、今日のデータ上の残高と財布の中身はあっているはずです。  ここで、昨日のデータを修正しました。  残高に影響するような修正をする羽目になったということは、 ・昨日の締めの作業が間違えていた。(つまり、昨日の残高が嘘だった。) ・使途不明金の正体が発覚した。  のどちらかのはずです。  もし、前者だとしたら、これは、もう、それ以降のデータが全部影響を受けるのはしょうがないですよね。計算し直すべきです。  後者だとすれば、使途不明金と、発覚して登録したデータとの差し引きは0になり、締めのデータは影響を受けない。つまり、今日のデータへの余波はないはずです。  というわけで、私が同じようなソフトを作ったときには、日次(月次)の締めようのテーブルを別途構築しました。  会社の会計と同じです。棚卸し(つまり、財布の中身とデータの照合)をしたときに、ソフト上で締めの作業をするわけです。そのときに、その日(月)の残高を締めテーブルに登録します。  今日(今月)の残高を計算するときには、締めテーブルの残高を基礎にして計算します。  もし、締めテーブルに波及するような過去データの修正をやったら、もう一度、それ以降のすべての日(月)の締め作業はやり直すべきですから、計算をやり直します。(そのためのメニュー項目かボタンと、その処理ルーチンは当然必要です。)  もし、プラスマイナスで相殺する修正なら締めの作業は別にやり直す必要もありません。  もっとも、前回の締め程度ならともかく、それ以前の締めデータにまで波及する修正が入るとなると・・・・現実の世界(財布)はどうなっていたかを考えると・・・それってどんぶり勘定?(笑)というわけで、普通は、締め作業のやり直しはそんなに大量のデータにはならないはずですよね。

p72man
質問者

お礼

なるほど!! そういう考え方があるんですね。 非常に参考になりました。早速試してみます! ご丁寧な説明ありがとうございました。

関連するQ&A

  • Excelで作成する家計簿の残高欄に使用する関数について

    家計簿をExcelを使い作成しています。入金・出金した後の残高欄(金額)をそのまま最終行に移行(転記)したいのですが、どの様な関数を利用すれば簡単に移行(転記)出来ますか? 事例:   日付    入金   出金   残高   2/23   10,000       10,000   2/25         5,000    5,000 { 数行が空欄 }     (月末)            5,000 [転記]

  • 残高を表示したい

    今までEXCELだった銀行口座データをACCESSで管理しようと思っています。 テーブルの構造は[ID][日付][内容][入金][出金][残高]です。 残高の計算は前日までの残高+入金-出金です。 クエリで計算すると思うので、色々やってみたのですがうまくいきません。 ご回答宜しくお願いいたします。

  • エクセルで金銭出納帳の入金累計をする時

    1  A     B     C      D     E 2  日付  科目   入金    出金   残高 ・ ・       (この間行数定めず) ・ X      合計  入金累計  出金累計 1~Xの間に、随時、行を挿入していきます。 行が定まっていれば、入金累計は=SUM(C3:Cx)ですが、 行が挿入されXが変化していく時の累計の数式を教えてください。 よろしくお願いいたします

  • SQLで残高計算

    現在 id-日付-入金-出金-残高 という5項目あるデータベースがあります。 入出金額を変更した際など、日付でソートをして、すべての行の残高データを再計算し、データを更新したいのですが、どのようなSQL分を使えばよろしいのでしょうか。 ご教授願います。

    • ベストアンサー
    • MySQL
  • エクセルで月毎の集計

    エクセルで銀行口座の管理をしようとしています。 A列に日付、B列に出金、C列に入金、E列に残高があります。(基本的に通帳の並びと同じです。) で、月ごとの出金、入金の管理をしたいと考えております。 各列ともにどんどん下の行に出金/入金を入力していくつもりなので、A列のとある月だけの出金、入金を抽出合計できたらいいなぁと思っています。何かよい方法(数式?)をご教示頂きたくよろしくお願いします。

  • 口座残高の日締めの方法

    お願いします。 Access2000で銀行口座管理用DBを作成中です。 テーブルは、(1)入金用(2)出金用(3)銀行登録(4)支払先登録(5)入金元登録の5種類。入金用に入金額、出金用に出金額がそれぞれ入ります。銀行口座の数は3つあります。 入金用・出金用のそれぞれのフォームで毎日取引を入力していきますが、入力がすべて完了したら日締め作業を行い、各口座の残高を算出して実際の銀行残高と照合したいと考えています。 残高を算出するためには、(1)前日残高(2)当日入金計(3)当日出金計が必要ですが、 1)前日残高は変数(毎日更新) 2)入金日計はクエリを使って集計 3)出金日計はクエリを使って集計 といったことになると思いますが具体的なプロシージャについてご指導いただけませんか? よろしくお願い致します。

  • SQLで困っています。

    お世話になります。 SQLで困っています。 [環境] SQLServer2008 [テーブル] 売上テーブル 売上テーブルには日付、種別、金額のみ持っています。 [データ] 日付|種別|金額|残高 2014.01.01|繰越|1,000,000 2014.01.05|入金|35,980|1,035,980 2014.01.06|出金|290,000|745,980  ←最低額 2014.01.07|入金|955|746,935 2014.01.08|入金|33,020|779,955 2014.01.09|入金|34,960|814,915 2014.01.10|入金|41,960|856,875 上記データで最低額を求める簡潔なSQLを考えていますが、思いつきません。 どなたかご教授頂けたらと思います。

  • エクセル関数 合計について 教えて下さい。

    会社で 頁ごとの金額の合計、『計算後残高』を求める作業をすることになりました。 (1)下の表で、『項目』の返却は入金、延滞は出金で、   入金と出金が 混在しているのです・・・・              (わかりにくくて すみません・・・(+_+)) (2) 1頁の件数は データによって違い、 (3) 『計算後残高』(下の表では 6列)は、データによって列が定まらず、 (4) 『計算後残高』は、その頁のデータの最後の行だけに表示します。 どんな関数を使ったらいいのでしょうか? 何時間も考えておりますが、なかなか・・・・・(;_;q) ご回答を、お待ちしております m(u_u)m よろしくお願い致します!

  • エクセルで出納帖を作成

    エクセルを利用して出納帖を作成したいのです。項目は日付、摘要、入金、出金、残高です。残高欄に計算式を入れたいのです。前残高に入金額をプラス、出金額をマイナスして残高が自動的に計算できるようにしたいのです。仮に、繰越残高があると、先のほうまで残高の数字が表示されますね。入金があった時点、出金があった時点で始めて残高が出るようにしたい。IF関数を使うそうですが、具体的に関数を教えてください。

  • EXCEL 2010についての質問です。

    現金出納の残高管理表をEXCELの自動計算で作りたいのですが。添付した図の入金表と出金兼残高表は別々のシートで作られていることが前提です。つまり、入金表から出金表を引けば手許残高になるわけですが、残高表は出金日ごとの手許残高が分かるように作りたいのです。つまり手許残高日報みたいな表です。入金は残高がマイナスにならないように手許入れをし、入金表に記入されます。したがって、毎日入金が行われるわけではありません。一方、出金は原則的に日々行われます(ない日もありますが)。要は、出金された日ごとの手許残高が分かる表が必要ということです。そこで、この表の「手許残高」の列の各セルにどのような関数を入れればいいのかをおしえてほしいのです。ただ、入金表と出金兼手許残高表はあくまで別のシートです。どなたかくわしい方、おしえてください。お願いします。