メールマガジン【アクセスで作るシリーズ】
バックナンバー 【会計ソフト編】 Vol.43
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【会計ソフト編】
発 行 : Yoshihisa Fukuda 2001. 2. 10 Vol.43
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
== ◇ 第4章 年度更新 ====================
今回は繰越データ作成のサブルーチン作成です。
--------------------------------------
4-1 年度更新
--------------------------------------
--------------------------------------
4-1-2 モジュール作成
--------------------------------------
繰越データ作成のサブルーチンを作成します。
【モジュール作成手順】
1.[モジュール]タブで前回作成した[CommonSub]モジュールを選択し、[デザイン]
ボタンを押してモジュールウィンドウを開きます。
2.カーソルを一番下(前回作成したFunction AddAccYear()の下)に移動し、
Function CreateStartData() と入力しエンターキーを押下します。
3.すると1行空いて End Function と表示されます。
この中に仕訳削除のプログラムを記述します。
4.以下のコードを Function CreateStartData() と End Function の間に記述
します。
Dim ACC_DB As Database
Dim Kamo_T As Recordset
Dim SubKamo_T As Recordset
Dim Siwake_T As Recordset
Dim Base_T As Recordset
Dim KamokuKind As Integer
Set ACC_DB = CurrentDb
Set Kamo_T = ACC_DB.OpenRecordset("KamokuTable")
Set SubKamo_T = ACC_DB.OpenRecordset("SubKamokuTable")
Set Siwake_T = ACC_DB.OpenRecordset("SiwakeTable")
Set Base_T = ACC_DB.OpenRecordset("BaseTable")
Base_T.MoveFirst
Kamo_T.MoveFirst
While Kamo_T.EOF = False
BalanceJournalSet Kamo_T.Fields("KamokuID").Value, _
0, _
Kamo_T.Fields("KamokuKind").Value, _
Nz(Kamo_T.Fields("ZanDaka").Value, 0), _
Base_T.Fields("AccountYear")
Kamo_T.MoveNext
Wend
SubKamo_T.MoveFirst
While SubKamo_T.EOF = False
KamokuKind = DLookup("KamokuKind", "KamokuTable", _
"KamokuID = " & SubKamo_T.Fields("ParentKamoID"))
BalanceJournalSet SubKamo_T.Fields("ParentKamoID").Value, _
SubKamo_T.Fields("SubKamokuID").Value, _
KamokuKind, _
Nz(SubKamo_T.Fields("ZanDaka").Value, 0), _
Base_T.Fields("AccountYear")
SubKamo_T.MoveNext
Wend
Kamo_T.Close
SubKamo_T.Close
Siwake_T.Close
Base_T.Close
ACC_DB.Close
5.次にその下にもう一つ BalanceJournalSet と言うサブルーチンを作成します。
一番下にカーソルを移動し
Function BalanceJournalSet(KamokuID As Integer, _
SubKamoID As Integer, _
KamokuKind As Integer, _
Balance As Currency, _
AccountYear As Integer)
と入力しエンターキーを押下します。
6.すると1行空いて End Function と表示されます。
この中に仕訳作成のプログラムを記述します。
7.以下のコードを Function BalanceJournalSet(・・・) と End Function
の間に記述します。
Dim ACC_DB As Database
Dim Siwake_T As Recordset
Dim FindStr As String
If KamokuKind > 3 Then
Exit Function
End If
Set ACC_DB = CurrentDb
Set Siwake_T = ACC_DB.OpenRecordset("SiwakeTable", dbOpenDynaset)
If KamokuKind = 2 Then
FindStr = "KariKamoID = 1 AND KasiKamoID = " & KamokuID & _
" AND KasiKamoHID = " & SubKamoID
Else
FindStr = "KasiKamoID = 1 AND KariKamoID = " & KamokuID & _
" AND KariKamoHID = " & SubKamoID
End If
Siwake_T.FindFirst (FindStr)
If Siwake_T.NoMatch = True Then
Siwake_T.AddNew
Else
If Balance = 0 Then
Siwake_T.Delete
Siwake_T.Close
ACC_DB.Close
Exit Function
Else
Siwake_T.Edit
End If
End If
Siwake_T.Fields("DenpyoDate").Value = AccountYear & "/1/1"
Siwake_T.Fields("DenpyoNo").Value = 0
If KamokuKind = 2 Then
Siwake_T.Fields("KariKamoID").Value = 1
Siwake_T.Fields("KasiKamoID").Value = KamokuID
Siwake_T.Fields("KariSubKamoID").Value = 0
Siwake_T.Fields("KasiSubKamoID").Value = SubKamoID
Else
Siwake_T.Fields("KariKamoID").Value = KamokuID
Siwake_T.Fields("KasiKamoID").Value = 1
Siwake_T.Fields("KariSubKamoID").Value = SubKamoID
Siwake_T.Fields("KasiSubKamoID").Value = 0
End If
Siwake_T.Fields("KariAmount").Value = Balance
Siwake_T.Fields("KasiAmount").Value = Balance
Siwake_T.Update
Siwake_T.Close
ACC_DB.Close
8.モジュールを上書き保存します。
今回はやっとサブルーチンらしいサブルーチンをが出てきました。
そこで、次回の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. 2. 10 Vol.43
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
== ◇ 第4章 年度更新 ====================
今回は繰越データ作成のサブルーチン作成です。
--------------------------------------
4-1 年度更新
--------------------------------------
--------------------------------------
4-1-2 モジュール作成
--------------------------------------
繰越データ作成のサブルーチンを作成します。
【モジュール作成手順】
1.[モジュール]タブで前回作成した[CommonSub]モジュールを選択し、[デザイン]
ボタンを押してモジュールウィンドウを開きます。
2.カーソルを一番下(前回作成したFunction AddAccYear()の下)に移動し、
Function CreateStartData() と入力しエンターキーを押下します。
3.すると1行空いて End Function と表示されます。
この中に仕訳削除のプログラムを記述します。
4.以下のコードを Function CreateStartData() と End Function の間に記述
します。
Dim ACC_DB As Database
Dim Kamo_T As Recordset
Dim SubKamo_T As Recordset
Dim Siwake_T As Recordset
Dim Base_T As Recordset
Dim KamokuKind As Integer
Set ACC_DB = CurrentDb
Set Kamo_T = ACC_DB.OpenRecordset("KamokuTable")
Set SubKamo_T = ACC_DB.OpenRecordset("SubKamokuTable")
Set Siwake_T = ACC_DB.OpenRecordset("SiwakeTable")
Set Base_T = ACC_DB.OpenRecordset("BaseTable")
Base_T.MoveFirst
Kamo_T.MoveFirst
While Kamo_T.EOF = False
BalanceJournalSet Kamo_T.Fields("KamokuID").Value, _
0, _
Kamo_T.Fields("KamokuKind").Value, _
Nz(Kamo_T.Fields("ZanDaka").Value, 0), _
Base_T.Fields("AccountYear")
Kamo_T.MoveNext
Wend
SubKamo_T.MoveFirst
While SubKamo_T.EOF = False
KamokuKind = DLookup("KamokuKind", "KamokuTable", _
"KamokuID = " & SubKamo_T.Fields("ParentKamoID"))
BalanceJournalSet SubKamo_T.Fields("ParentKamoID").Value, _
SubKamo_T.Fields("SubKamokuID").Value, _
KamokuKind, _
Nz(SubKamo_T.Fields("ZanDaka").Value, 0), _
Base_T.Fields("AccountYear")
SubKamo_T.MoveNext
Wend
Kamo_T.Close
SubKamo_T.Close
Siwake_T.Close
Base_T.Close
ACC_DB.Close
5.次にその下にもう一つ BalanceJournalSet と言うサブルーチンを作成します。
一番下にカーソルを移動し
Function BalanceJournalSet(KamokuID As Integer, _
SubKamoID As Integer, _
KamokuKind As Integer, _
Balance As Currency, _
AccountYear As Integer)
と入力しエンターキーを押下します。
6.すると1行空いて End Function と表示されます。
この中に仕訳作成のプログラムを記述します。
7.以下のコードを Function BalanceJournalSet(・・・) と End Function
の間に記述します。
Dim ACC_DB As Database
Dim Siwake_T As Recordset
Dim FindStr As String
If KamokuKind > 3 Then
Exit Function
End If
Set ACC_DB = CurrentDb
Set Siwake_T = ACC_DB.OpenRecordset("SiwakeTable", dbOpenDynaset)
If KamokuKind = 2 Then
FindStr = "KariKamoID = 1 AND KasiKamoID = " & KamokuID & _
" AND KasiKamoHID = " & SubKamoID
Else
FindStr = "KasiKamoID = 1 AND KariKamoID = " & KamokuID & _
" AND KariKamoHID = " & SubKamoID
End If
Siwake_T.FindFirst (FindStr)
If Siwake_T.NoMatch = True Then
Siwake_T.AddNew
Else
If Balance = 0 Then
Siwake_T.Delete
Siwake_T.Close
ACC_DB.Close
Exit Function
Else
Siwake_T.Edit
End If
End If
Siwake_T.Fields("DenpyoDate").Value = AccountYear & "/1/1"
Siwake_T.Fields("DenpyoNo").Value = 0
If KamokuKind = 2 Then
Siwake_T.Fields("KariKamoID").Value = 1
Siwake_T.Fields("KasiKamoID").Value = KamokuID
Siwake_T.Fields("KariSubKamoID").Value = 0
Siwake_T.Fields("KasiSubKamoID").Value = SubKamoID
Else
Siwake_T.Fields("KariKamoID").Value = KamokuID
Siwake_T.Fields("KasiKamoID").Value = 1
Siwake_T.Fields("KariSubKamoID").Value = SubKamoID
Siwake_T.Fields("KasiSubKamoID").Value = 0
End If
Siwake_T.Fields("KariAmount").Value = Balance
Siwake_T.Fields("KasiAmount").Value = Balance
Siwake_T.Update
Siwake_T.Close
ACC_DB.Close
8.モジュールを上書き保存します。
今回はやっとサブルーチンらしいサブルーチンをが出てきました。
そこで、次回の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.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□