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


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

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

    発 行 : Yoshihisa Fukuda          2000.06.17 Vol.11

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

今回からは補助科目設定です。

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

--------------------------------------
1-5 補助科目設定
--------------------------------------
補助科目テーブルにはID、名称、コード、期首残高などが必要です。
また、どの勘定科目に属しているかの親科目IDも必要です。

--------------------------------------
1-5-1 テーブル作成
--------------------------------------
テーブルの定義は今までと同様です。
もう、大分慣れてきましたね。

テーブルのデザインビューで以下のフィールドを定義します。

補助科目テーブル レイアウト
______________________________________
フィールド名  データ型    サイズ  説明&標題     小数点以下桁数
______________________________________
SubKamokuID   数値型     長整数型 補助科目ID(主キー)0
SubKamokuCode  テキスト型   2     補助科目コード
SubKamokuName  テキスト型   12    補助科目名
ZanDaka     通貨型          期首残高      0
ParentKamoID  数値型     長整数型 親科目ID      0
-----------------------------------

名前を付けて保存で[SubKamokuTable]という名前で保存しましょう。
今回も主キーの設定があります。
SubKamokuID を主キーに設定しましょう。

テーブル定義はこれで終わりです。

では、早速フォーム作成に掛かりましょう。

--------------------------------------
1-5-2 フォーム作成
--------------------------------------
フォームは、いつも通りウィザードを使用して作成します。

【フォーム作成手順】
1.[フォーム]タブで[新規作成]ボタンを押して[フォームウィザード]を選びます。
2.[元になるテーブル/クエリーの選択]で[SubKamokuTable]を選択して[OK]ボタン
  を押します。
3.[選択可能なフィールド]から全てのフィールドを選択し[次へ]ボタンを押します。
  [>>]ボタンで全てのフィールドが選択出来ます。
4.[フォームの表示形式]は今回は[表形式]を選び[次へ]ボタンを押します。
5.[スタイル]は[BestStyle]を選択し[次へ]ボタンを押します。
6.[フォーム名]を[SubKamokuSetForm]とします。
7.[フォームを作成した後に行うこと]で[フォームのデザインを編集する]を選び
  [完了]ボタンを押します。
8.フォームを選択した状態で以下のプロパティを設定します。
 (1)標題 ・・・・・・・・・・・ 補助科目設定
 (2)ポップアップ ・・・・・・・ はい
 (3)作業ウィンドウ固定 ・・・・ はい
 (4)境界線スタイル ・・・・・・ ダイアログ
 (5)コントロールボックス ・・・ いいえ
9.フォームフッタに閉じるボタンを追加します。
  これも、今までと同じ要領です。
10.では次に、勘定科目設定と同様に、IDのテキストボックスを非表示にします。
  補助科目設定では、親科目IDも親科目のIDを自動で設定するため、画面上では
  非表示にします。
 (1)補助科目IDのテキストボックス[SubKamokuID]をクリックして選択します。
 (2)次に[Shift]キーを押しながら親科目IDのテキストボックス[ParentKamoID]
    をクリックすると補助科目IDと親科目IDのテキストボックスが選択できます。
 (3)両方を選択した状態で[可視]プロパティに[いいえ]を設定します。
   ([可視]プロパティにカーソルを移動して、右端の[▼]ボタンで[いいえ]を
    選択します。)
  これで同時に2つのテキストボックスを非表示にできました。
11.勘定科目設定の科目IDの時と同様に、テキストボックスを移動し、補助科目ID
  と親科目IDのラベルを削除して、レイアウトを整えます。
12.補助科目も勘定科目と同様に、コード順で並び替えて表示しましょう。
  勘定科目の時は、クエリーを用いて、並べ替えの指定をしましたが、補助科目は
  [並べ替え]プロパティを使ってみましょう。
  フォームを選択して、[並べ替え]プロパティに
  [SubKamokuTable.SubKamokuCode]と入力します。
13.このままでは、勘定科目の時と同じでフォームを一度閉じて、開き直さないと
  並び変わりません。
  補助科目の場合、あまり再表示ボタンは必要に思いませんが、勘定科目の時と
  違ったやり方を紹介するために、再表示のボタンを作ってみましょう。
  作り方は勘定科目の時と同様です。
 (1)ツールバーの[コマンドボタン]を選択し、コントロールウィザードを解除
    します。(コントロールウィザードはツールバーの矢印の隣にある魔法の棒
    の様なボタンで、一度押す毎に設定、解除となります。)
 (2)フォームフッターの[閉じる]ボタンの隣にボタンを作成しましょう。
 (3)ウィザードを解除しているので、[閉じる]ボタンを作成した時の様なウィザ
    ードのウィンドウは出てきません。
    ボタンの名称などはプロパティで全て設定します。
 (4)作成したボタンを選択し、[名前]プロパティに[ReDisp]、[標題]プロパティ
    に[再表示]と設定します。
 (5)[クリック時]プロパティに[イベントプロシージャ]を設定し、[...]ボタン
    でモジュールウィンドウを開きます。
 (6)ここでコードを書くのですが、以下のように勘定科目の時と同じ方法でも
    構いません。

    Private Sub ReDisp_Click()
      Me.Requery
    End Sub

    そして、もう一つの方法として

    Private Sub ReDisp_Click()
      Me.OrderByOn = False
      Me.OrderByOn = True
    End Sub

    でも、再表示(並び替え)ができます。

 (7)[×]ボタンでモジュールウィンドウを閉じます。
    これで、再表示ボタンの完成です。

[再表示]ボタンの動作確認は、勘定科目の時と同様、補助科目コードを昇順でなく
登録し、[再表示]ボタンでデータが補助科目コードで昇順に並べばOKです。

14.次に、新規追加時の親科目IDの規定値の設定を行います。
  今回は新しく式ビルダといのを使ってみましょう。
 (1)親科目IDのテキストボックス[ParentKamoID]を選択します。
 (2)[規定値]プロパティにカーソルを移動し、右端の[...]ボタンを押します。
 (3)すると、式ビルダというウィンドウが開きます。
    そこで、下段の左端のリストボックスの[フォーム]をダブルクリックします。
 (4)ツリーが開いて中に[読み込まれたフォーム][すべてのフォーム]という項目
    が出てくるので、[すべてのフォーム]をダブルクリックします。
 (5)その中の[KamokuSetForm]を選択すると、下段の真ん中のリストボックスに
    色々な項目が表示されます。
    これは[KamokuSetForm]のコントロール(テキストボックスやラベルなど)
    です。
 (6)この中の[KamokuID]を選択し、下段右端のリストボックスが[<値>]が選択
    されているのを確認したら、[貼り付け]ボタン([<値>]の上、ヘルプボタ
    ンの左にある)を押します。
 (7)上段のフィールドに Forms![KamokuSetForm]![KamokuID] と表示されたら、
    [OK]ボタンを押して式ビルダのウィンドウを閉じます。
 (8)[規定値]プロパティに = Forms![KamokuSetForm]![KamokuID] と入りました
    ね。これで規定値の設定ができました。

残るはプログラミングです。
これも今回でやってしまいましょう。

勘定科目設定の時と同様で、補助科目IDの自動連番を振るプログラミングを行います。
1.フォームを選択し、[挿入前処理]プロパティに[イベントプロシージャ]を設定し
  [...]ボタンでモジュールウィンドウを開きます。
2.以下のコードを入力しましょう。

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

    SubKamokuIDMax = DMax("SubKamokuID", "SubKamokuTable")
    If IsNull(SubKamokuIDMax) Then
      Me![SubKamokuID] = 1
    Else
      Me![SubKamokuID] = SubKamokuIDMax + 1
    End If
  End Sub

3.入力したら右上の[×]ボタンでモジュールウィンドウを閉じます。

最後に、補助科目で設定した期首残高を合計して、勘定科目の期首残高に設定して
あげましょう。
1.フォームを選択し、[更新後処理]プロパティに[イベントプロシージャ]を設定し
  [...]ボタンでモジュールウィンドウを開きます。
2.以下のコードを入力しましょう。

  Private Sub Form_AfterUpdate()
    [Forms]![KamokuSet]![ZanDaka] = DSum("ZanDaka", "HKamokuTable", _
        "HKamokuTreeID = " & [Forms]![KamokuSet]![KamokuID])
  End Sub

3.入力したら右上の[×]ボタンでモジュールウィンドウを閉じます。

これで、補助科目の期首残高を入力すると、勘定科目の期首残高が自動でセットされ
る様になりました。

--------------------------------------
ちょっとボリュームがあったかも知れませんが、勘定科目設定の時と同様の事が
多かったので、勘定科目設定を問題無くできた人は、今回は比較的、易しかったの
ではないでしょうか。

次回は勘定科目設定に補助科目設定を呼び出すボタンを付加しましょう。
______________________________________

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

【式ビルダー】

 今回、初めて式ビルダというのが出てきました。
 ご存じの方も多いと思いますが、この式ビルダはモジュールウィンドウや、その他
 あちこちで、入力の補助として使用できます。

 モジュールウィンドウで右クリックをすると、プルダウンメニューの中に[ビルド]
 と言うのがあります。
 これを選ぶと式ビルダが開きます。

 式ビルダの構成としては、上段が式ボックスです。
 下段で選んだものや、自分で直接キーボードから入力した式などが入力できます。

 下段は左端が、オブジェクトや関数、演算子、定数などです。

 下段の真ん中は、左端で選んだものに対する要素が表示されます。
 例えば、フォームを選ぶと、そのフォームにあるコントロールなどが表示されます。
 また、関数を選ぶと関数の分類が表示されるといった具合です。

 下段の右端は、それらの値などが表示されます。
 例えばフォームのコントロールなら、それらのプロパティが、関数なら選んだ分類
 に属する関数が表示されます。

 関数を忘れた時や、テーブル、フォーム、フィールドなどの名前を忘れた時など、
 入力の手助けをしてくれます。
______________________________________
◆◇ Q&A        ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

Q1.
 サンプルがあるとかいてましたがどこにあるんですか?
 URLを教えてください

A1.
 当ホームページの「メールマガジン」から入っていただき「サンプル」という中に
 あります。
 また、ホームページは、現在リニューアルを考えております。
 直接URLを指定せずにTOPページからお入り下さいます様、お願いいたします。
 各ページでブックマークされておられる方もご注意下さい。

 http://www.bekkoame.ne.jp/ro/y.fukuda/

______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

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

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