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


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

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

    発 行 : Yoshihisa Fukuda          2000.06.10 Vol.10

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

今回は勘定科目設定フォーム作成の続きです。

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

--------------------------------------
1-4 勘定科目設定
--------------------------------------
--------------------------------------
1-4-2 フォーム作成
--------------------------------------
早速ですが、今回はプログラミングからスタートです。

1.前回のQ&Aにもありましたが、科目IDはシステムで連番を振ります。
 (1)フォームを選択して、[挿入前処理]プロパティにカーソルを移動します。
 (2)[▼]ボタンで[イベントプロシージャ]を選択し、[...]ボタンでモジュール
    ウィンドウを開きます。
 (3)そこで次の様にコードを入力しましょう。

    Private Sub Form_BeforeInsert(Cancel As Integer)
      Dim KamokuIDMax As Variant

      KamokuIDMax = DMax("KamokuID", "KamokuTable")
      If IsNull(KamokuIDMax) Then
        Me![KamokuID] = 1
      Else
        Me![KamokuID] = KamokuIDMax + 1
      End If
    End Sub

 (4)入力したら右上の[×]ボタンでモジュールウィンドウを閉じます。
    これで科目IDの自動連番は完了です。

 【解説】
  Dim は変数の宣言です。ここでバリアント型の変数として KamokuIDMax を宣言
  しています。
  DMax関数は最大値を求める関数です。
  一度、変数 KamokuIDMax に現在の科目IDの最大値を代入します。
  If 文で変数 KamokuIDMax がNullかチェックしています。
  勘定科目テーブルのデータが1件も無い時は、DMax関数はNull値を返すので、
  その時は科目IDに1を代入します。
  そうで無い時は、KamokuIDMax(現在の最大値)+1の値を科目IDに代入します。
  勘定科目テーブルは特殊科目を最初に設定しておくので、データが1件も
  無い場合はあり得ないのですが、一応処理は入れておきましょう。

 ※ これだけでは、完璧な欠番の無い連番は振れません。
   最終データ削除時の欠番が発生しなくなるだけです。
   Access-97では最終データを削除した場合、データベースの最適化を行えば
   欠番は発生しないのですが、ここでは、それと同様の機能を実現しています。
   Access2000に関して、私の得た情報では最終データの欠番は発生しない様です。
   Access-97で最適化をしたのと同じ動作になるのかと思われます。
   (定かでは無いので解る方は情報を下さい)
   もし、そうならこの処理はAccess2000ではオートナンバーで代用できます。
   但し、完璧な欠番回避処理(中間データ削除時の欠番も発生しない)を、全て
   が完成した後、第5章 拡張機能 で取り上げる予定でいます。

では、この辺でフォームの動作確認をしてみましょう。
最初に、[テーブル]タブで[KamokuTable]を開いて、特殊科目を設定しておきます。
動作チェックなのでデータは何でも構いません。
試しに以下のようなデータを登録してみます。
______________________________________
KamokuID KamokuCode KamokuName KamokuKind 
______________________________________
1    9999    繰越    6
______________________________________
貸借区分~決算書枠番号までは未入力で構いません。

登録したら、[フォーム]タブに戻って、[KamokuSetForm]を[開く]ボタンで実行して
みましょう。
1行目に、今入力した繰越が出力されていますね。
この繰越は特殊科目なので、勘定科目設定のフォームに出てきて修正や削除をされて
はいけません。(科目種別が特殊に関するものは、全てシステムで使用するだけで
表に現れてはいけません)

2.勘定科目設定フォームで特殊科目を表示させないようにする。
 (1)[KamokuSetForm]をデザインウィンドウで開きます。
 (2)フォームを選択した状態で[レコードソース]プロパティにカーソルを移動
    します。
 (3)[レコードソース]プロパティが[KamokuTable]になっている事を確認して、
    右端の[...]ボタンを押します。
   (ここからは、前回の科目種別コンボボックスと同じ要領です)
 (4)「テーブルを基にしてクエリービルダーが起動されました。このテーブル
    を基にしてクエリーを作成しますか?」と聞かれるので[はい]を選び、
    [SQLステートメント:クエリービルダ]というウィンドウを開きます。
 (5)上段の[KamokuTable]の[KamokuID][KamokuCode][KamokuName][KamokuKind]
    [TaiSyaku][KazeiKubun][ZanDaka][BoxNo]を順番にダブルクリックして、
    下段の左側から設定していきます。
 (6)下段の[KamokuKind]が設定されている欄の[抽出条件]に[<6]と書きます。

ここで、ついでに表示順の指定も行いましょう。
勘定科目設定は科目コードを昇順で表示します。
 (7)下段の[KamokuCode]が設定されている欄の[並べ替え]の所にカーソルを移動
    します。
 (8)右端の[▼]ボタンを押して[昇順]を選択しましょう。
 (9)[クエリービルダ]ウィンドウの[×]ボタンを押して「SQLステートメントの
    変更を保存し、プロパティの設定を更新しますか?」と聞かれたら[はい]
    を選んで終了します。

では、フォームを上書き保存してから、動作確認をします。
[フォーム]タブで、[KamokuSetForm]を[開く]ボタンで実行しましょう。
さっき出ていた繰越の科目が消えましたか?
勘定科目設定の画面では特殊科目以外の科目は全て登録、修正、削除が行えます。

ちょっと大変かも知れませんが、あと一息です。
頑張って下さい。

最後に、先程、並べ替えを科目コードで昇順に指定しましたが、このままでは入力
したデータは一度フォームを閉じないと科目コードの昇順では表示されません。
そこで、データの再表示(厳密に言うと再クエリーなのですが)をさせるための
ボタンを作ります。
 3.[再表示]ボタンの作成。
 (1)ツールバーの[コマンドボタン]を選択し、コントロールウィザードを解除
    します。(コントロールウィザードはツールバーの矢印の隣にある魔法の棒
    の様なボタンで、一度押す毎に設定、解除となります。)
 (2)フォームフッターの[閉じる]ボタンの隣にボタンを作成しましょう。
 (3)ウィザードを解除しているので、[閉じる]ボタンを作成した時の様なウィザ
    ードのウィンドウは出てきません。
    ボタンの名称などはプロパティで全て設定します。
 (4)作成したボタンを選択し、[名前]プロパティに[ReDisp]、[標題]プロパティ
    に[再表示]と設定します。
 (5)[クリック時]プロパティに[イベントプロシージャ]を設定し、[...]ボタン
    でモジュールウィンドウを開きます。
 (6)ここで以下のコードを記述しましょう。

    Private Sub ReDisp_Click()
      Me.Requery
    End Sub

 (7)[×]ボタンでモジュールウィンドウを閉じます。
    これで、再表示ボタンの完成です。
[再表示]ボタンの動作確認は、科目コードを昇順でなく登録し、[再表示]ボタンで
データが昇順に並べばOKです。
【例】科目データを
______________________________________
KamokuCode KamokuName
______________________________________
0001    科目1
0003    科目3
0002    科目2
______________________________________
と登録し、[再表示]ボタンを押すと
0001    科目1
0002    科目2
0003    科目3
と表示されればOKです。

お疲れさまでした。
これで勘定科目設定は完成です。と言いたい所ですが、実はここでも残件があります。
それは、補助科目設定を呼び出すボタンです。
このボタンを作成するには、補助科目設定がなければならないので、補助科目設定を
作成した後で、補助科目設定を呼び出すボタンを付加しましょう。

--------------------------------------
どうでしたか?
勘定科目設定は、ちょっと大変だったかも知れません。
何が大変かというと、全て文章で伝えなければいけないので、思うように伝わらない
という点です。(これは、ただ単に私の文章能力の問題ですが)
ホームページのサンプルと補足説明(できるだけ書きますので)も活用して下さい。
分からない点は、質問いただければ私もホームページに何を書けばよいかが判ります
ので、遠慮なくメール下さい。

次回は補助科目設定です。
______________________________________

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

【クエリービルダー】

 前回から、クエリーが登場しました。
 クエリービルダーの使い方を文章だけで説明するのは非常に困難で、皆様も少し
 解りづらいのでは無いかと思います。

 何でもそうなのですが、同じ事をやるにも、幾つかの方法(手段)があります。
 例えば、今回のクエリービルダーの場合、下段のフィールドに項目を設定する際、
 ダブルクリックで行いましたが、ドラッグ&ドロップでもできます。
 ダブルクリックでは左側から順番にしか設定できませんが、ドラッグ&ドロップ
 なら、好きなところに挿入もできます。
 ただ、これがなかなか説明しにくく、簡単なダブルクリックを使用しました。

 ヘルプでキーワードに[クエリーのデザイン,]と入れれば説明がありますので、
 皆さん、一読してみて下さい。

 今後クエリーは何度も登場するので、ヘルプ等で解らない事は、質問して下さい。
______________________________________
◆◇ アンケート終了    ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

 アンケートは本日、6月10日を持ちまして終了させて戴きます。
 ご協力を戴きました読者の皆様方には、深くお礼を申し上げます。
 ありがとうございました。
 アンケートは終了しますが、要望などありましたら、いつでもメール下さい。
 今後とも、よろしくお願いいたします。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

◇ 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.

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