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


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

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

    発 行 : Yoshihisa Fukuda          2000.04.29 Vol.4

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

== ◇ 第1章 情報設定     ====================

--------------------------------------
1-1 基本情報設定
--------------------------------------

--------------------------------------
1-1-2 フォーム作成
--------------------------------------
今回は基本情報設定の最終回。プログラミングです。

さていよいよ、プログラミングに入ります。

1.まず最初は会計年度を入力すると会計期間が表示されるようにしましょう。
  個人事業主の場合、基本的に会計期間は1月1日~12月31日です。
  (開業時、廃業時は期首、期末が変わるので、期首、期末も自由に書き換えられ
  るようにしておきます)
 (1)会計年度のフィールド[AccountYear]を選択し、プロパティウィンドウの
    [更新後処理]プロパティにカーソルを持っていきます。
    すると右側に[▼]が出るので、それをクリックして[イベントプロシージャ]
    を選びます。
 (2)そして今度は[▼]の右側にある[...]ボタンを押しましょう。
    するとモジュールウィンドウが開きます。
 (3)開いた所で次のように入力しましょう。

    Private Sub AccountYear_AfterUpdate()
      If IsNull(Me![AccountYear]) = False Then
        Me![AccountStart] = Str(Me![AccountYear].Value) & "/1/1"
        Me![AccountEnd] = Str(Me![AccountYear].Value) & "/12/31"
      End If
    End Sub

 (4)入力したら右上の[×]ボタンでモジュールウィンドウを閉じます。
  これで会計期間の自動設定が完了しました。

 【解説】
  Me![AccountStart] = Str(Me![AccountYear].Value) & "/1/1"
  Me![AccountEnd] = Str(Me![AccountYear].Value) & "/12/31"
  この2行は会計年度が入力された時、期首に会計年度の1月1日、期末に会計年
  度の12月31日を代入しています。
  会計年度[AccountYear]の[更新後処理]プロパティに入れたので、会計年度の値
  が更新されたとき、期首と期末が代入されるわけです。

  Str(Me![AccountYear].Value) は会計年度の数値を文字列に変換しています。
  & は文字列の連結です。
  & "/1/1" とする事で文字列の連結ができ、それを期首に代入しています。

  If IsNull(Me![AccountYear]) = False Then は会計期間がブランク(空白)の
  場合、期首、期末の代入を行わない様にしています。

 ※ 会計年度は西暦の下2桁の入力も可能です。
   例えば99と入力すると会計期間は1999/1/1~1999/12/31
   0と入力すると2000/1/1~2000/12/31となります。

2.さていよいよ最後です。
  会計年度(会計期間)は値が入っていないと、会計ソフトは動作しません。
  会計年度と会計期間(期首、期末)は必ず必要なので入力必須にします。
  入力必須の仕方には、幾つかの方法があります。
  一つは、テーブルの作成時に[標準]タブの[値要求]を[はい]にする方法です。
  これでも必須にできるのですが、ただエラーメッセージがACCESSのシステムで
  勝手に出力するため、分かりづらいメッセージになってしまいます。
  このメッセージの内容を変えることもできるのですが、エラーコードを拾ったり
  とか色々面倒なので、今回は一番簡単に[閉じる]ボタンが押された時にチェック
  する方法にします。

 (1)[閉じる]ボタンを選択し、プロパティウィンドウの[クリック時]プロパティ
    にカーソルを持っていきます。
 (2)今度はすでに[イベントプロシージャ]になっているので[...]ボタンを押して
    モジュールウィンドウを開きましょう。
 (3)開くと既に色々とコードが書いてあると思います。
    そのコードの中に以下のコードを書き加えます。

    On Error GoTo Err_Close_Click   ・・・既にある

    ここから
    If IsNull(Me![AccountYear]) Then
      MsgBox ("会計年度は必ず入力してください。")
      Me![AccountYear].SetFocus
      Exit Sub
    End If
    If IsNull(Me![AccountStart]) Then
      MsgBox ("期首は必ず入力してください。")
      Me![AccountStart].SetFocus
      Exit Sub
    End If
    If IsNull(Me![AccountEnd]) Then
      MsgBox ("期末は必ず入力してください。")
      Me![AccountEnd].SetFocus
      Exit Sub
    End If
    ここまでを入力しましょう。

    DoCmd.Close           ・・・既にある

 【解説】
  各 if 文でそれぞれ、会計年度、期首、期末がブランク(空白)かをチェック
  しています。
  いずれかがブランクの場合、まずMsgBox関数でメッセージを表示します。
  その後、SetFocusメソッドでブランクだったフィールドへカーソルを移動します。
  Exit Sub はこの関数(この場合クリック時)を抜けるという意味で、これが
  無いとエラーメッセージを出力した後、基本情報設定が終了してしまいます。

--------------------------------------
以上で基本情報設定は終わりです。

次回からは環境設定です。
______________________________________

◆◇ ワンポイントコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

【イベントとメソッド】
 今回、突然VBAのコードを書いたのですが、上手くできたでしょうか?
 特に初心者の方は戸惑いがあった事と思います。
 そこで、まず基本となるイベントとメソッドという考え方をご紹介します。

 ここでは初心者の方に解ってもらうため、簡単に説明します。

 イベントとは「マウスでクリックされた」「キーボードが押された」などの操作に
 よって発生します。
 テキストボックスを選択してプロパティウィンドウの[イベント]タブを見て下さい。
 [更新前処理][更新後処理]・・・[キー入力時]などがありますね。
 これらの各イベントに対してVBA(コード)、マクロ、式を使う事ができます。
 次にラベルを選択してみて下さい。
 [イベント]タブの中には何もありません。
 ラベルはただ文字を表示するだけなのでイベントは発生しません。

 次にメソッドですが、これはコントロールに対して何らかの指示をしたい時、使用
 します。
 例えば、今回のようにフィールドにカーソルを移動したい時は、移動したいフィー
 ルドのSetFocusというメソッドを使用します。
 また、テキストボックスなどでUndoというメソッドでメニューの[元に戻す]と同様
 の事ができます。
 メソッドもまた、コントロールにより内容が違います。

 イベントはコントロールに発生した事象を知らせてくれるもので、メソッドは
 コントロールに対して動作を指示するものだと思って下さい。

______________________________________
◆◇ Q&Aコーナー    ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
 前回、ACCESS2000に関して情報提供を呼びかけました所、多数のメールを戴き
 ました。
 この場をお借りしてお礼を申し上げます。
 ご協力、ありがとうございました。

 また、ホームページにACCESS2000のコーナーを新設いたしました。
 併せてご利用ください。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

◇ 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 Yoshihisa Fukuda All rights reserved.

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