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


バックナンバー 【会計ソフト編】 Vol.42
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

    ACCESSで作るシリーズ  【会計ソフト編】

    発 行 : Yoshihisa Fukuda          2001. 2. 2 Vol.42

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------


== ◇ 第4章 年度更新     ====================

今回は仕訳データ削除と年度のカウントアップのサブルーチン作成です。

--------------------------------------
4-1 年度更新
--------------------------------------
--------------------------------------
4-1-2 モジュール作成
--------------------------------------
仕訳データ削除のサブルーチンを作成します。

【モジュール作成手順】
1.[モジュール]タブで前回作成した[CommonSub]モジュールを選択し、[デザイン]
  ボタンを押してモジュールウィンドウを開きます。
2.カーソルを一番下(前回作成したFunction MotoireCalc()の下)に移動し、
  Function SiwakeDelete() と入力しエンターキーを押下します。
3.すると1行空いて End Function と表示されます。
  この中に仕訳削除のプログラムを記述します。
4.以下のコードを Function SiwakeDelete() と End Function の間に記述
  します。

  Dim SqlStr As String
  Dim StartDate As String
  Dim EndDate As String
  
  DoCmd.SetWarnings False
  StartDate = DLookup("AccountStart", "BaseTable")
  EndDate = DLookup("AccountEnd", "BaseTable")
  
  SqlStr = "DELETE SiwakeTable.* from SiwakeTable " & _
  "where (DenpyoDate >= #" & StartDate & _
  "# AND DenpyoDate <= #" & EndDate & "#);"
  
  DoCmd.RunSQL SqlStr
  
  DoCmd.SetWarnings True

次に年度をカウントアップするサブルーチンを作成します。

5.今作成したSiwakeDelete()サブルーチンの下に、Function AddAccYear()と
  入力しエンターキーを押下します。
6.すると1行空いて End Function と表示されます。
  この中に年度カウントアップのプログラムを記述します。
7.以下のコードを Function AddAccYear() と End Function の間に記述
  します。

  Dim ACC_DB As Database
  Dim Base_T As Recordset
  
  Set ACC_DB = CurrentDb
  Set Base_T = ACC_DB.OpenRecordset("BaseTable")
  
  Base_T.MoveFirst
  Base_T.Edit
  
  Base_T.Fields("AccountYear") = Base_T.Fields("AccountYear") + 1
  Base_T.Fields("AccountStart") = _
         CDate(Str(Base_T.Fields("AccountYear")) + "/1/1")
  Base_T.Fields("AccountEnd") = _
         CDate(Str(Base_T.Fields("AccountYear")) + "/12/31")
  
  Base_T.Update
  Base_T.Close
  ACC_DB.Close

8.モジュールを上書き保存します。

【解説】

それでは仕訳削除サブルーチンの解説です。

1.まず、最初から3行は変数の宣言です。
2.5行目の DoCmd.SetWarnings False は、仕訳テーブルのレコードを削除する
  時に出るダイアログを非表示にしています。
  (詳しくは今回のワンポイントコーナーを参照して下さい)
3.6行目は基本テーブルの会計開始日を取得しています。
4.7行目は基本テーブルの会計終了日を取得しています。
5.9行目から11行目までは、仕訳データ削除のSQL文を SqlStr という変数
  に入れています。
6.13行目5.でセットしたSQL文を実行して仕訳データを削除しています。
7.15行目は2.で設定したダイアログの非表示を元に戻しています。

次に年度カウントアップサブルーチンの解説です。

1.まず、最初の2行は変数の宣言です。
2.4行目はデータベースのオープン、5行目は基本テーブルのオープンを行って
  います。
3.7行目は基本テーブルのレコードセットをMoveFirstメソッドを用いてカレント
  レコードを先頭に移動しています。
4.8行目は基本テーブルのレコードセットをEditメソッドを用いて変更できる
  様にしています。
5.10行目は基本テーブルの現在の会計年度に1を加算しています。
6.11・12行目では1を加算した会計年度の1月1日を会計開始日に設定して
  います。
7.13・14行目では1を加算した会計年度の12月31日を会計終了日に設定
  しています。
8.16行目は基本テーブルのレコードセットをUpdateメソッドを用いて更新して
  います。
9.17行目で基本テーブルをクローズし、18行目でデータベースをクローズ
  しています。

次回は繰越データ作成のサブルーチンを作成します。
______________________________________
◆◇ ワンポイントコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

 【確認ダイアログ】

 今回作成したサブルーチンの中に出てきた DoCmd.SetWarnings False に付いて
 少し触れて見ましょう。

 アクセスでテーブルのレコードを削除しようとすると以下の様なメッセージが
 ダイアログで表示されます。

 ○○件のレコードを削除します。
 [はい]をクリックすると、削除したレコードを元に戻すことはできません。
 これらのレコードを削除してもよろしいですか?

 このメッセージダイアログの表示・非表示を切り換えるのが DoCmd.SetWarnings
 で False を指定すると非表示、True を指定すると表示になります。

 ですから、毎回この様なメッセージボックスが出た方が安心という方は、今回の
 DoCmd.SetWarnings False と  DoCmd.SetWarnings True は取り除いて下さい。

 この指定はテーブルのレコード削除のみではなく、マクロやVBAの実行による
 警告メッセージが全て表示・非表示が切り替わります。

 また、この確認ダイアログはアクセスのオプション設定でも指定できます。
 以前にも出てきたので、皆さんよくご存じでしょう。

 メニューの[ツール]-[オプション]でオプションダイアログを開き、[編集/検索]
 タブの中の[確認]という所にある[アクションクエリー]のチェックボックスを
 外す事で表示しなくも出来ます。

 皆さんの使いやすい設定をして下さい。
______________________________________
◆◇ 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.

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