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


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

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

    発 行 : Yoshihisa Fukuda          2000.07.29 Vol.17

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

今回は仕訳入力のフォーム作成の続きです。

== ◇ 第2章 帳簿入力     ====================

--------------------------------------
2-1 仕訳入力
--------------------------------------
--------------------------------------
2-1-2 フォーム作成(続き)
--------------------------------------

1.貸借それぞれの勘定科目、補助科目の科目名称表示用テキストボックスを作成
  します。
 (1)ツールバーのテキストボックスを借方勘定科目[KariKamoID]のコンボ
    ボックスの右隣あたりでクリックします。
    (前回のレイアウトの*1の位置です)
    この時、コントロールウィザードは有効にしておきます。

 ※ 前回レイアウト
  ---------------------------------------------------------------------
  詳細セクション
  ---------------------------------------------------------------------
  [DenpyoNo] [KariKamoID]  *1[KariAmount][KasiKamoID]  *3[KasiAmount]
  [DenpyoDate][KariSubKamoID]*2[KariTax]  [KasiSubKamoID]*4[KasiTax]
  ---------------------------------------------------------------------

 (2)テキストボックスウィザードで[横書き]を選び、フォントとサイズを好きな
    値に設定して[次へ]ボタンを押します。
 (3)2画面目はそのままで[次へ]ボタンを押します。
 (4)テキストボックス名に[KariKamoName]と入れて[完了]ボタンを押します。
 (5)余分なラベルが勝手に作成されるので、これらを削除しておきます。
 (6)作成したテキストボックスを選択して、次のプロパティを設定します。
    コントロールソース ・・・ KamokuTable.KamokuName
    使用可能 ・・・・・・・・ いいえ
    編集ロック ・・・・・・・ はい
2.同様の手順で貸方勘定科目[KasiKamoID]、借方補助科目[KariSubKamoID]、
  貸方補助科目[KasiSubKamoID]の各コンボボックスの右隣にも、テキスト
  ボックスを作成します。
  テキストボックス名は、それぞれ[KasiKamoName]、[KariSubKamoName]、
  [KasiSubKamoName]となり、[コントロールソース]プロパティは、それぞれ
  [KamokuTable_1.KamokuName]、[SubKamokuTable.KamokuName]、
  [SubKamokuTable_1.KamokuName]となります。
  その他のプロパティは同じです。
  (前回のレイアウトの*2、*3、*4の位置です)
3.貸借それぞれの勘定科目のコンボボックスの設定を行います。
 (1)まず、先程作成した借方勘定科目の名称表示用テキストボックスを選択し
    [幅]プロパティの値を憶えておきましょう。
 (2)借方勘定科目のコンボボックス[KariKamoID]を選択し、[列幅]プロパティに
    カーソルを移動し、[0cm;XXXcm;YYYcm;0cm]と入力します。
    (XXXは借方勘定科目のコンボボックスの[幅]プロパティの値、YYYは(1)
    で憶えた値です)
 (3)[リスト幅]プロパティに[ZZZcm]と設定します。(ZZZ = XXX + YYY)
 (4)貸方勘定科目のコンボボックス[KasiKamoID]も同様の手順で、[列幅]プロ
    パティと[リスト幅]プロパティを設定しましょう。
4.次は、貸借それぞれの、補助科目コンボボックスの設定です。
 (1)勘定科目と同様に、[列幅]プロパティと[リスト幅]プロパティを設定しま
    しょう。
 (2)借方補助科目のコンボボックス[KariSubKamoID]を選択し、[値集合ソース]
    プロパティにカーソルを移動します。
 (3)右端の[...]ボタンでクエリービルダーを起動し、下段のフィールドの
    [ParentKamoID]の抽出条件に[Forms]![SiwakeForm]![KariKamoID]と入力
    します。
 (4)右上の[×]ボタンでクエリーを保存して終了します。
 (5)貸方補助科目のコンボボックス[KasiSubKamoID]も同様に、[値集合ソース]
    のクエリーの抽出条件を設定します。
    (抽出条件は[Forms]![SiwakeForm]![KasiKamoID]となります)
5.では、ここからプログラミングに入ります。
  まず最初は、仕訳IDに自動連番を振るプログラムを書きましょう。
  勘定科目設定や、補助科目設定のIDの時と同じです。
 (1)フォームを選択し、[挿入前処理]プロパティに[イベントプロシージャ]を
    設定し[...]ボタンでモジュールウィンドウを開きます。
 (2)以下のコードを入力しましょう。

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

    SiwakeIDMax = DMax("SiwakeID", "SiwakeTable")
    If IsNull(SiwakeIDMax) Then
      Me![SiwakeID] = 1
    Else
      Me![SiwakeID] = SiwakeIDMax + 1
    End If
  End Sub

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

6.先程、貸借の補助科目のコンボボックスで抽出条件を設定しましたが、このまま
  では、正しく動作しません。
  そこで、次の設定を行います。
 (1)借方補助科目のコンボボックス[KariSubKamoID]を選択します。
 (2)[フォーカス取得時]プロパティにカーソルを移動し、イベントプロシージャ
    を設定して、モジュールウィンドウを開きます。
 (3)以下のコードを入力しましょう。

  Private Sub KariSubKamoID_Enter()
    KariSubKamoID.Requery
  End Sub

 (4)入力したら右上の[×]ボタンでモジュールウィンドウを閉じます。
 (5)貸方補助科目のコンボボックス[KasiSubKamoID]も同様の手順で以下の
    コードを書きます。

  Private Sub KasiSubKamoID_Enter()
    KasiSubKamoID.Requery
  End Sub

【解説】
  ここで、少し補助科目コンボボックスについて、解説しておきましょう。
  まず、4.の中でコンボボックスの元になるクエリーに抽出条件を加えました。
  この抽出条件により、勘定科目に付随する補助科目をコンボボックスの選択項目
  にしています。
  例えば、勘定科目が現金なら、現金に付随する補助科目がコンボボックスで選択
  できる様になる訳です。
  そして、6.のコードで、補助科目のコンボボックスを再クエリーする事により
  勘定科目が変わっても、補助科目の内容が再構成されます。
  しかし、今のままでは完全ではありません。
  実は、補助科目のコードが消える事があるのです。
 (理論が解っている人は、直ぐに気付くと思いますが)
  これは、見た目だけの問題で特に支障はないので、この対応は後の拡張機能で
  取り上げます。ここでは気にしないで下さい。

では皆さんも、ここまでの動作確認をしてみましょう。
まず、勘定科目設定で補助科目を設定しなければなりません。
【例】ここでは、サンプルの勘定科目データを元に話しを進めます。
 (1)勘定科目設定を開いて、普通預金の行の[補助]ボタンを押します。
 (2)補助科目設定が開いたら、以下の様にデータを登録してみましょう。
  --------------------------------------------
  補助科目コード   補助科目名   残高
  --------------------------------------------
  01         A銀行     0
  02         B銀行     0
  03         C銀行     0
  --------------------------------------------
 (3)補助科目を設定したら、仕訳入力を開きます。
 (4)仕訳入力で借方勘定科目に普通預金を設定して、借方補助科目のコンボ
    ボックスを開くと、先程のA銀行、B銀行、C銀行がでてきます。
    借方勘定科目に普通預金以外を設定すると、借方補助科目のコンボボックス
    は開いても空の状態です。
 (5)貸方に関しても、同様にデータを設定して、同じ動作をすればOKです。

--------------------------------------
今回は、この辺で終わりにしましょう。
仕訳入力のフォーム作成を、2回で終わらそうと思っていたのですが、ちょっと無理
だった様です。
次回、仕訳入力のフォーム作成の続きで、仕訳入力を完成させたいと思います。
--------------------------------------
______________________________________
◆◇ 訂正とお詫び     ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

 前回の Vol.16 におきまして、間違いがありました。
 Vol.16 の10.の(12)に間違いがありましたので訂正いたします。

【誤】
 (12)同じ要領で、[SubKamokuTable_1]の[SubKamokuID]と[SiwakeTable]の
    [KariSubkamoID]の結合プロパティを設定します。(「3: 'SiwakeTable'の
    全レコードと'SubKamokuTable_1'の同じ結合フィールドのレコードだけを
    含める。」を選択)
【正】
 (12)同じ要領で、[SubKamokuTable_1]の[SubKamokuID]と[SiwakeTable]の
    [KasiSubkamoID]の結合プロパティを設定します。(「3: 'SiwakeTable'の
    全レコードと'SubKamokuTable_1'の同じ結合フィールドのレコードだけを
    含める。」を選択)
 ちょっと、判りにくいですが、2行目の最初の[KariSubkamoID]が[KasiSubkamoID]
 の間違いでした。

 ここに訂正し、お詫び申し上げます。
______________________________________
◆◇ ワンポイントコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

【科目の名称表示の方法】

 今回、勘定科目、補助科目の科目名称表示用テキストボックスの追加を行いました
 が、前にも同じ様な事をやりました。
 皆さん、憶えておられますか?

 そうです。環境設定にでてきましたね。(Vol.13参照)

 しかし、今回とは表示の仕方が少し違いますね。
 あの時は、Columnプロパティを使用しました。
 コンボボックスの項目の中の一つ(科目名)を取り出して、テキストボックスに
 設定する方法でした。

 今回は、クエリーでデータを結びつけて、名称をテーブルから引っ張ってきました。

 前回の環境設定も、クエリーで結びつけて、仕訳入力と同様の方法でも行えます。
 特にどちらの方法が良いというのは無いのですが、ただ、仕訳入力では、Column
 プロパティで設定する方法は使用できません。
 理由は、フォームが表形式だからです。
 Columnプロパティを使用すると、名称テキストボックスは非連結コントロールと
 なるため、表形式の場合、全行の科目名称が同じになってしまうからです。

 この様に、同じ事をやる場合でも、色々な手段があります。
 皆さんは、できる限り数多くの手法を、知って下さい。
______________________________________
◆◇ 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 Yoshihisa Fukuda All rights reserved.

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