|
主キー | フィールド名 | データ型 | サイズ | インデックス |
〇 | ID | オートナンバー型 | 重複なし | |
年 | 整数型 | 重複あり | ||
月 | 整数型 | 重複あり | ||
日 | 整数型 | 重複あり | ||
摘要 | 短いテキスト | 50 | ||
入金 | 通貨型 | |||
出金 | 通貨型 | |||
残金 | 通貨型 | |||
備考 | 短いテキスト | 50 |
2.クエリー設計
出納帳テーブルを基にして以下のクエリーを作成します。
・Q_月別出納 【Query種類】:選択
フィールド名 | テーブル | 抽出条件 | 並替 | 表示 |
年 | 出納帳 | [forms]![F_出納帳]![年度] | 昇順 | × |
月 | 〃 | [forms]![F_出納帳]![月度] | 昇順 | × |
日 | 〃 | 昇順 | × | |
ID | 〃 | 昇順 | × | |
摘要 | 〃 | × | ||
入金 | 〃 | × | ||
出金 | 〃 | × | ||
残金 | 〃 | × | ||
備考 | 〃 | × |
・Q_残高更新
【Query種類】:更新
Q_月別出納を更新します。
フィールド名 | テーブル | レコード゙の更新 |
残金 | Q_月別出納 | ZanDaka([入金],[出金]) |
3.フォーム設計
まずメインフォームとなる「F_出納帳」を作成します。
このフォームには以下のオブジェクトを配置します。
・F_出納帳
オブジェクト名 | 機能・役割 | |
「年度_Up」 「年度_Down」 |
コマンドボタン | 年度をカウントアップ/ダウンさせます。 |
「月度」 | オプショングループ | 月度を選択させます。 |
「印刷」 | コマンドボタン | レポートを開きます。 |
「残高更新」 | コマンドボタン | 残高を更新させます。 |
「閉じる」 | コマンドボタン | フォームを閉じます。 |
「F_出納帳Sub」 | サブフォーム | 出納帳明細を表示します。 |
入金計txt | テキストボックス | サブフォームの「入金計」を参照します。 |
出金計txt | テキストボックス | サブフォームの「出金計」を参照します。 |
残高txt | テキストボックス | サブフォームの「累残金」を参照します。 |
そしてフォームのイベントプロシージャを次の様に記述します。
Private Sub Form_Load() '読み込み時フォームを最大表示します。 DoCmd.Maximize End Sub Private Sub 印刷_Click() 'プレビューモードでレポートを開きます。 DoCmd.OpenReport "R_出納帳", acViewPreview End Sub Private Sub 年度_Down_Click() '年度をひとつ繰り下げます。 Me![年度] = Me![年度] - 1 'サブフォームを再クエリ-します。 Me!F_出納帳Sub.Requery End Sub Private Sub 年度_Up_Click() '年度をひとつ繰り上げます。 Me![年度] = Me![年度] + 1 'サブフォームを再クエリ-します。 Me!F_出納帳Sub.Requery End Sub Private Sub 月度_AfterUpdate() 'サブフォームを再クエリ-します。 Me!F_出納帳Sub.Requery End Sub Private Sub 閉じる_Click() 'フォームを閉じます。 DoCmd.Close End Sub |
・F_出納帳Sub
レコードソースを「Q_月別出納」として、[フォームウィザード]ですべてのフィールドを選択して、フォームのレイアウトは[データシート]としてフォーム名を「F_出納帳Sub」とします。
4.レポート設計
・R_出納帳
レコードソースを「Q_月別出納」に設定して、[グループ化と並べ替え]で並び順を設定します。
5.マクロ・モジュール
・残高更新マクロ
内容は次の通りです。
- メッセージを非表示にします。
- 残高変数を初期化します。
- 「残高更新」クエリーを実行します。
- メッセージの表示を「はい」にします。
- サブフォームを再クエリーします。
・モジュール1
Option Compare Database Option Explicit '累計残高をグローバル変数で宣言 Dim RuiZan As Long Public Function ZanIni() '残高変数を初期化します RuiZan = 0 End Function Public Function ZanDaka(A As Long, B As Long) As Long '残高変数を引数処理します RuiZan = RuiZan + Nz(A) - Nz(B) '処理された計算値を渡します ZanDaka = RuiZan End Function |
※ DownLoad の「suitou.zip」で動作を確認してみて下さい。