メールマガジン【アクセスで作るシリーズ】
バックナンバー 【会計ソフト編】 Vol.39
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【会計ソフト編】
発 行 : Yoshihisa Fukuda 2001. 1.13 Vol.39
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
== ◇ 第4章 年度更新 ====================
今回は年度更新の集計サブルーチンをモジュールで作成します。
--------------------------------------
4-1 年度更新
--------------------------------------
--------------------------------------
4-1-2 モジュール作成
--------------------------------------
勘定科目の残高集計サブルーチンを作成します。
【モジュール作成手順】
1.[モジュール]タブで[新規作成]ボタンを押すとモジュールウィンドウが開きます。
2.最初に
Option Compare Database
Option Explicit
と既に2行表示されているので、その下にカーソルを移動して
Function KamokuZanCalc() と入力しエンターキーを押下します。
3.すると1行空いて End Function と表示されます。
この中に勘定科目集計のプログラムを記述しましょう。
4.以下のコードを Function KamokuZanCalc() と End Function の間に記述
します。
Dim ACC_DB As Database
Dim Kamo_T As Recordset
Dim KariTotal As Currency
Dim KasiTotal As Currency
Dim FindDate As String
Dim FindStr As String
Dim JigyoKasiKamoID As Long
Dim JigyoKariKamoID As Long
FindDate = "DenpyoDate >= #" & DLookup("AccountStart", "BaseTable") & _
"# AND DenpyoDate <= #" & DLookup("AccountEnd", "BaseTable") & "# AND "
JigyoKasiKamoID = DLookup("JigKasiKamoID", "EnvironTable")
JigyoKariKamoID = DLookup("JigKariKamoID", "EnvironTable")
Set ACC_DB = CurrentDb
Set Kamo_T = ACC_DB.OpenRecordset("KamokuTable", dbOpenDynaset)
Kamo_T.MoveFirst
While Kamo_T.EOF = False
If Kamo_T.Fields("KamokuKind") < 4 And _
Kamo_T.Fields("KamokuID") <> JigyoKasiKamoID And _
Kamo_T.Fields("KamokuID") <> JigyoKariKamoID Then
Kamo_T.Edit
FindStr = FindDate & "KasiKamoID <> 1 AND KariKamoID = " & _
Kamo_T.Fields("KamokuID")
KariTotal = Nz(DSum("KariAmount", "SiwakeTable", FindStr), 0)
FindStr = FindDate & "KariKamoID <> 1 AND KasiKamoID = " & _
Kamo_T.Fields("KamokuID")
KasiTotal = Nz(DSum("KasiAmount", "SiwakeTable", FindStr), 0)
If Kamo_T.Fields("KamokuKind").Value = 2 Then
Kamo_T.Fields("ZanDaka").Value = _
Nz(Kamo_T.Fields("ZanDaka").Value) - KariTotal + KasiTotal
Else
Kamo_T.Fields("ZanDaka").Value = _
Nz(Kamo_T.Fields("ZanDaka").Value) + KariTotal - KasiTotal
End If
Kamo_T.Update
End If
Kamo_T.MoveNext
Wend
Kamo_T.Close
ACC_DB.Close
5.モジュールを[CommonSub]という名前で保存します。
【解説】
1.まず、最初から8行は変数の宣言です。
2.10行目、11行目は仕訳データ抽出条件の日付範囲の条件式(SQL)です。
3.12行目、13行目は勘定科目の事業主貸科目と事業主借科目(環境設定で
設定される項目)の科目IDを求めています。
これは、この2つ(事業主貸科目と事業主借科目)は残高集計をしない科目
なので、集計する科目の条件から外すためです。
4.15行目はデータベースのオープン、16行目は勘定科目テーブルのオープン
を行っています。
5.18行目は勘定科目テーブルのレコードセットをMoveFirstメソッドを用いて
カレントレコードを先頭に移動しています。
6.20行目から42行目のWhile文の中は勘定科目テーブルを先頭から1レコード
づつ最終レコードまで処理するループです。
7.21、22、23行目の If文は科目種別が3以下(資産・負債・資本)で
事業主貸科目と事業主借科目以外の科目のみ集計するためのIf文です。
8.24行目は勘定科目テーブルのデータをEditメソッドを用いて更新(残高を更新)
できるようにしています。
9.25、26行目で借方金額を集計するための仕訳データの抽出条件を指定して
います。
10.27行目で借方金額を集計しています。
11.28、29行目で貸方金額を集計するための仕訳データの抽出条件を指定して
います。
12.30行目で貸方金額を集計しています。
13.33、34行目で負債に関する残高計算を、36、37行目で資産・資本に
関する残高計算を行っています。
14.39行目で勘定科目テーブルにデータを更新しています。
15.41行目で勘定科目テーブルのカレントレコードをMoveNextメソッドを用いて
次のレコードへ移動しています。
16.44行目で勘定科目テーブルをクローズ、45行目でデータベースをクローズ
しています。
以上で、勘定科目の残高集計サブルーチンは完成です。
次回は補助科目の残高集計サブルーチンを作成します。
______________________________________
◆◇ ワンポイントコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
【モジュール】
今回、初めてモジュールを作成しました。
モジュールは、複数の箇所で共通で使用できるサブルーチンなどがある場合、使用
します。
フォームのイベントプロシージャのモジュールでは、Functionの前にPrivateが
付いたと思います。
以前にも少し触れましたが、Privateが付くとそのモジュール内だけでしか使用
出来ません。
今回の様な共通サブルーチンの場合、色々なモジュール(フォーム)から呼び出さ
れるのでFunction の前に Privateは付きません。
これで、どのフォームからでも使用できるサブルーチンができます。
勘定科目の残高集計は、残高試算表や決算書など、あらゆる所で使用できます。
インターフェースさえ上手に設計すれば、全てこのモジュールの勘定科目残高集計
サブルーチン1つで出来る訳です。
このサブルーチンの作り方で、ソフトを作成する効率が大幅に変わってきます。
______________________________________
◆◇ Q&Aコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
今回はありません。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ ACCESSで作るシリーズ 【会計ソフト編】
◇ 発 行 元 :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
ご質問等 :y.fukuda@ro.bekkoame.ne.jp
◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
しています。(まぐまぐID:0000030446)
◇ バックナンバー:http://www.bekkoame.ne.jp/ro/y.fukuda/
◇ 登録・解除 :http://www.bekkoame.ne.jp/ro/y.fukuda/
Copyright(C) 2000-2001 Yoshihisa Fukuda All rights reserved.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【会計ソフト編】
発 行 : Yoshihisa Fukuda 2001. 1.13 Vol.39
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
== ◇ 第4章 年度更新 ====================
今回は年度更新の集計サブルーチンをモジュールで作成します。
--------------------------------------
4-1 年度更新
--------------------------------------
--------------------------------------
4-1-2 モジュール作成
--------------------------------------
勘定科目の残高集計サブルーチンを作成します。
【モジュール作成手順】
1.[モジュール]タブで[新規作成]ボタンを押すとモジュールウィンドウが開きます。
2.最初に
Option Compare Database
Option Explicit
と既に2行表示されているので、その下にカーソルを移動して
Function KamokuZanCalc() と入力しエンターキーを押下します。
3.すると1行空いて End Function と表示されます。
この中に勘定科目集計のプログラムを記述しましょう。
4.以下のコードを Function KamokuZanCalc() と End Function の間に記述
します。
Dim ACC_DB As Database
Dim Kamo_T As Recordset
Dim KariTotal As Currency
Dim KasiTotal As Currency
Dim FindDate As String
Dim FindStr As String
Dim JigyoKasiKamoID As Long
Dim JigyoKariKamoID As Long
FindDate = "DenpyoDate >= #" & DLookup("AccountStart", "BaseTable") & _
"# AND DenpyoDate <= #" & DLookup("AccountEnd", "BaseTable") & "# AND "
JigyoKasiKamoID = DLookup("JigKasiKamoID", "EnvironTable")
JigyoKariKamoID = DLookup("JigKariKamoID", "EnvironTable")
Set ACC_DB = CurrentDb
Set Kamo_T = ACC_DB.OpenRecordset("KamokuTable", dbOpenDynaset)
Kamo_T.MoveFirst
While Kamo_T.EOF = False
If Kamo_T.Fields("KamokuKind") < 4 And _
Kamo_T.Fields("KamokuID") <> JigyoKasiKamoID And _
Kamo_T.Fields("KamokuID") <> JigyoKariKamoID Then
Kamo_T.Edit
FindStr = FindDate & "KasiKamoID <> 1 AND KariKamoID = " & _
Kamo_T.Fields("KamokuID")
KariTotal = Nz(DSum("KariAmount", "SiwakeTable", FindStr), 0)
FindStr = FindDate & "KariKamoID <> 1 AND KasiKamoID = " & _
Kamo_T.Fields("KamokuID")
KasiTotal = Nz(DSum("KasiAmount", "SiwakeTable", FindStr), 0)
If Kamo_T.Fields("KamokuKind").Value = 2 Then
Kamo_T.Fields("ZanDaka").Value = _
Nz(Kamo_T.Fields("ZanDaka").Value) - KariTotal + KasiTotal
Else
Kamo_T.Fields("ZanDaka").Value = _
Nz(Kamo_T.Fields("ZanDaka").Value) + KariTotal - KasiTotal
End If
Kamo_T.Update
End If
Kamo_T.MoveNext
Wend
Kamo_T.Close
ACC_DB.Close
5.モジュールを[CommonSub]という名前で保存します。
【解説】
1.まず、最初から8行は変数の宣言です。
2.10行目、11行目は仕訳データ抽出条件の日付範囲の条件式(SQL)です。
3.12行目、13行目は勘定科目の事業主貸科目と事業主借科目(環境設定で
設定される項目)の科目IDを求めています。
これは、この2つ(事業主貸科目と事業主借科目)は残高集計をしない科目
なので、集計する科目の条件から外すためです。
4.15行目はデータベースのオープン、16行目は勘定科目テーブルのオープン
を行っています。
5.18行目は勘定科目テーブルのレコードセットをMoveFirstメソッドを用いて
カレントレコードを先頭に移動しています。
6.20行目から42行目のWhile文の中は勘定科目テーブルを先頭から1レコード
づつ最終レコードまで処理するループです。
7.21、22、23行目の If文は科目種別が3以下(資産・負債・資本)で
事業主貸科目と事業主借科目以外の科目のみ集計するためのIf文です。
8.24行目は勘定科目テーブルのデータをEditメソッドを用いて更新(残高を更新)
できるようにしています。
9.25、26行目で借方金額を集計するための仕訳データの抽出条件を指定して
います。
10.27行目で借方金額を集計しています。
11.28、29行目で貸方金額を集計するための仕訳データの抽出条件を指定して
います。
12.30行目で貸方金額を集計しています。
13.33、34行目で負債に関する残高計算を、36、37行目で資産・資本に
関する残高計算を行っています。
14.39行目で勘定科目テーブルにデータを更新しています。
15.41行目で勘定科目テーブルのカレントレコードをMoveNextメソッドを用いて
次のレコードへ移動しています。
16.44行目で勘定科目テーブルをクローズ、45行目でデータベースをクローズ
しています。
以上で、勘定科目の残高集計サブルーチンは完成です。
次回は補助科目の残高集計サブルーチンを作成します。
______________________________________
◆◇ ワンポイントコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
【モジュール】
今回、初めてモジュールを作成しました。
モジュールは、複数の箇所で共通で使用できるサブルーチンなどがある場合、使用
します。
フォームのイベントプロシージャのモジュールでは、Functionの前にPrivateが
付いたと思います。
以前にも少し触れましたが、Privateが付くとそのモジュール内だけでしか使用
出来ません。
今回の様な共通サブルーチンの場合、色々なモジュール(フォーム)から呼び出さ
れるのでFunction の前に Privateは付きません。
これで、どのフォームからでも使用できるサブルーチンができます。
勘定科目の残高集計は、残高試算表や決算書など、あらゆる所で使用できます。
インターフェースさえ上手に設計すれば、全てこのモジュールの勘定科目残高集計
サブルーチン1つで出来る訳です。
このサブルーチンの作り方で、ソフトを作成する効率が大幅に変わってきます。
______________________________________
◆◇ Q&Aコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
今回はありません。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ ACCESSで作るシリーズ 【会計ソフト編】
◇ 発 行 元 :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
ご質問等 :y.fukuda@ro.bekkoame.ne.jp
◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
しています。(まぐまぐID:0000030446)
◇ バックナンバー:http://www.bekkoame.ne.jp/ro/y.fukuda/
◇ 登録・解除 :http://www.bekkoame.ne.jp/ro/y.fukuda/
Copyright(C) 2000-2001 Yoshihisa Fukuda All rights reserved.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□