メールマガジン【アクセスで作るシリーズ】


バックナンバー 【会計ソフト編】 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.

◇転載について
 このメールマガジンの無断転載などは、一切禁止です。
 転載をご希望の方は、事前にメールで連絡をください。
◇免責
 このメールマガジン及びホームページの内容による、いかなる損害、障害などに
 関して発行者は一切の責任を負いません。
 掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□