メールマガジン【アクセスで作るシリーズ】
バックナンバー 【会計ソフト編】 Vol.21
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【会計ソフト編】
発 行 : Yoshihisa Fukuda 2000.08.26 Vol.21
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は、総勘定元帳の印刷指示画面作成の続きです。
== ◇ 第3章 帳票 ====================
--------------------------------------
3-1 総勘定元帳
--------------------------------------
--------------------------------------
3-1-2 フォーム作成(続き)
--------------------------------------
その前に、前回またまた、抜けがありましたので、それをやりましょう。
補助科目コンボボックスの抽出条件の設定を行います。
1.補助科目コンボボックスを選択し、[値集合ソース]プロパティにカーソルを移動
したら、右端の[...]ボタンでクエリービルダーを開きます。
2.上段の[SubKamokuTable]の[ParentKamoID]をダブルクリックして、下段のフィー
ルドに設定します。
3.[ParentKamoID]フィールドの抽出条件に、Forms![MotoCyoRepForm]![KamokuCombo]
と設定します。
4.[×]ボタンでクエリービルダーを閉じます。
以上です。
では、ここからプログラミングに入ります。
1.勘定科目コンボボックスで選んだ勘定科目の名称を勘定科目名表示用テキスト
ボックスに設定します。
また、選んだ時、補助科目コンボボックスをクリアして、再クエリーもしておき
ましょう。
(1)勘定科目コンボボックスを選択し、[更新後処理]プロパティにカーソルを
移動して、[イベントプロシージャ]を設定します。
(2)[...]ボタンでモジュールウィンドウを開き、次のコードを入力します。
Private Sub KamokuCombo_AfterUpdate()
KamokuName = KamokuCombo.Column(2)
SubKamokuCombo = Null
SubKamokuCombo.Requery
End Sub
(3)[×]ボタンを押してモジュールウィンドウを閉じます。
2.次に元帳テーブルのデータを作成するサブルーチンを作りましょう。
サブルーチンに関しては今回のワンポイントで解説するとして、取りあえず
作ってみます。
(1)勘定科目コンボボックスを選択し、[更新後処理]プロパティにカーソルを
移動して、[...]ボタンでモジュールウィンドウを開きます。
(2)カーソルをモジュールウィンドウの一番下(何もない所)まで移動し、
以下のように入力したらエンターキーを押します。
Private Function CreateMotocyoData() As Boolean
(3)すると一行空いて、その下に End Function と自動的に表示されます。
(4)このサブルーチン(Private Function CreateMotocyoData() As Boolean
と End Function の間)の中に以下のコードを記述します。
______________________________________
◆◇ 注意 ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
横の文字数を削減するため以下の文字を置き換えて下さい。
※M は Motocyo_T.Fields ※S は Siwake_T.Fields
【例】
※M("DenpyoNo").Value = ※S("DenpyoNo").Value
は
Motocyo_T.Fields("DenpyoNo").Value = Siwake_T.Fields("DenpyoNo").Value
となります。
______________________________________
Dim Siwake_T As Recordset
Dim Motocyo_T As Recordset
Dim MotocyoNo As Integer
Dim SQL1 As String
Dim SQL2 As String
SQL1 = "SELECT SiwakeTable.SiwakeID, " & _
"SiwakeTable.DenpyoNo, SiwakeTable.DenpyoDate, " & _
"SiwakeTable.KariKamoID, SiwakeTable.KasiKamoID, " & _
"SiwakeTable.KariSubKamoID, SiwakeTable.KasiSubKamoID, " & _
"SiwakeTable.KariAmount, SiwakeTable.KasiAmount, " & _
"SiwakeTable.KariTax, SiwakeTable.KasiTax, " & _
"SiwakeTable.TekiyoUp, SiwakeTable.TekiyoDown " & _
"FROM SiwakeTable WHERE (((SiwakeTable.KariKamoID) = " & _
[Forms]![MotocyorepForm]![KamokuCombo] & " ) OR " & _
"((SiwakeTable.KasiKamoID) = " & _
[Forms]![MotocyorepForm]![KamokuCombo] & ")) " & _
"ORDER BY SiwakeTable.DenpyoDate, SiwakeTable.DenpyoNo;"
SQL2 = "SELECT SiwakeTable.SiwakeID, " & _
"SiwakeTable.DenpyoNo, SiwakeTable.DenpyoDate, " & _
"SiwakeTable.KariKamoID, SiwakeTable.KasiKamoID, " & _
"SiwakeTable.KariSubKamoID, SiwakeTable.KasiSubKamoID, " & _
"SiwakeTable.KariAmount, SiwakeTable.KasiAmount, " & _
"SiwakeTable.KariTax, SiwakeTable.KasiTax, " & _
"SiwakeTable.TekiyoUp, SiwakeTable.TekiyoDown " & _
"FROM SiwakeTable WHERE (((SiwakeTable.KariKamoID) = " & _
[Forms]![MotocyorepForm]![KamokuCombo] & ") AND " & _
"((SiwakeTable.KariSubKamoID) = " & _
[Forms]![MotocyorepForm]![SubKamokuCombo] & ") OR (" & _
"((SiwakeTable.KasiKamoID) = " & _
[Forms]![MotocyorepForm]![KamokuCombo] & ") AND " & _
"((SiwakeTable.KasiSubKamoID) = " & _
[Forms]![MotocyorepForm]![SubKamokuCombo] & "))" & _
"ORDER BY SiwakeTable.DenpyoDate, SiwakeTable.DenpyoNo;"
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE MotocyoTable.* FROM MotocyoTable"
DoCmd.SetWarnings True
Set Motocyo_T = CurrentDb.OpenRecordset("MotocyoTable")
If IsNull([Forms]![MotocyorepForm]![SubKamokuCombo]) Then
Set Siwake_T = CurrentDb.OpenRecordset(SQL1)
Else
Set Siwake_T = CurrentDb.OpenRecordset(SQL2)
End If
If Siwake_T.RecordCount < 1 Then
MsgBox "該当データがありません"
CreateMotocyoData = False
Exit Function
End If
Siwake_T.MoveFirst
MotocyoNo = 1
While Siwake_T.EOF = False
Motocyo_T.AddNew
※M("MotocyoID").Value = MotocyoNo
※M("DenpyoNo").Value = ※S("DenpyoNo").Value
※M("DenpyoDate").Value = ※S("DenpyoDate").Value
If ※S("KariKamoID").Value = CInt(Me![KamokuCombo]) Then
※M("KamokuID").Value = ※S("KariKamoID").Value
※M("AiteKamokuID").Value = ※S("KasiKamoID").Value
※M("SubKamokuID").Value = ※S("KariSubKamoID").Value
※M("AiteSubKamokuID").Value = ※S("KasiSubKamoID").Value
Else
※M("KamokuID").Value = ※S("KasiKamoID").Value
※M("AiteKamokuID").Value = ※S("KariKamoID").Value
※M("SubKamokuID").Value = ※S("KasiSubKamoID").Value
※M("AiteSubKamokuID").Value = ※S("KariSubKamoID").Value
End If
※M("KariAmount").Value = ※S("KariAmount").Value
※M("KasiAmount").Value = ※S("KasiAmount").Value
※M("KariTax").Value = ※S("KariTax").Value
※M("KasiTax").Value = ※S("KasiTax").Value
※M("TekiyoUp").Value = ※S("TekiyoUp").Value
※M("TekiyoDown").Value = ※S("TekiyoDown").Value
Motocyo_T.Update
Siwake_T.MoveNext
MotocyoNo = MotocyoNo + 1
Wend
Motocyo_T.Close
Siwake_T.Close
CreateMotocyoData = True
(5)[×]ボタンを押してモジュールウィンドウを閉じます。
今回のプログラムは少し複雑でした。
メールマガジンの横幅の制限があるため、まるで暗号の様になってしまい、申し訳
ありません。
皆さんは、お手数ですが、間違えない様、入力して下さい。
モジュールウィンドウには、置換機能(メニューの[編集]-[置換]もありますので
一度メールマガジンの通りに入力して、※Mと※Sを置き換える方法が良いでしょう。
このサブルーチンの呼び出しは、総勘定元帳のレポートを作成後、印刷ボタンの中で
行います。
【解説】
ここで簡単に解説をしておきます。
SQL1とSQL2は文字列型の変数で、SQL文を代入しています。
SQL1は補助科目の指定が無い場合、SQL2は補助科目の指定が有る場合のSQLです。
このSQLは仕訳テーブルから、勘定科目コンボボックスで指定された科目が、貸借
いずれかに使用されているレコードを抽出し、伝票日付と伝票番号で昇順にソート
するSQLです。
(SQLに関しては、別途解説します)
DoCmd.RunSQL "DELETE MotocyoTable.* FROM MotocyoTable" は元帳テーブルの
今あるデータを削除しています。
これもSQLを使用しています。(DoCmd.RunSQLでSQLを実行しています)
次に元帳テーブルと仕訳テーブルをオープンしています。
これにより、Motocyo_T と Siwake_T でテーブルにアクセスできます。
If Siwake_T.RecordCount < 1 Then は抽出した仕訳データ(元帳として表示する
データ)の件数をチェックし、データが無ければメッセージを表示した後、
リターン値をFalseにして、このサブルーチンを抜け出します。
データが有る場合、仕訳テーブル(抽出したデータ)を1件づつ読み出し、元帳
テーブルに書き込んでいきます。
全てのデータが処理し終わったら、テーブルをクローズし、リターン値をTrueに
してサブルーチンを終了します。
--------------------------------------
今回はここまでです。
次回は総勘定元帳のクエリー作成です。
______________________________________
◆◇ ワンポイントコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
【サブルーチン】
今回、また新たにサブルーチンが登場しました。
そこで、初心者の方のために、簡単にサブルーチンを解説しましょう。
サブルーチンとは、長いプログラムや、各箇所で同じ処理をする場合に共通で使用
できるようにしたプログラムの単位です。
何百ステップものプログラムを延々と書くと、後で見たとき、何処で何の処理を
しているかなど、探すのに一苦労します。
その様な場合、ある単位に分けて分割する事により、見易くメンテナンスも容易に
なります。
例えば、あるファイルからデータを読み込んで、加工した後、別のファイルに結果
を書き込む様なプログラムを書く場合、ファイルを読み込む処理、読み込んだデー
タを加工する処理、ファイルに書き込む処理などのサブルーチンに分割すると、
プログラムが非常に見易く、修正もしやすくなります。
また、同じ処理を色々な場面で使用する場合も、サブルーチンを一つ作ってしまえ
ば、後はそれを呼び出すだけで済みます。
そして、サブルーチン化する事により、動作チェックも個々のサブルーチン毎に
チェックすれば良く、プログラムに変更が生じた場合も、その部分のサブルーチン
を一つ修正するだけで済むため、プログラムの作成効率が大幅に良くなります。
サブルーチンには、幾つかの種類があります。
まず、全てのモジュール(フォーム)で共通に使用できるサブルーチンと同一の
モジュール(フォーム)内だけで共通に使用できるサブルーチンがあります。
それから、値を返すサブルーチンと返さないサブルーチンがあります。
Private Sub KamokuCombo_AfterUpdate() は今回の勘定科目コンボボックスの
更新後処理のサブルーチンです。
最初のPrivateとありますが、これはこのモジュール(ここでは総勘定元帳印刷
指示画面のフォーム)内だけで使用できる事を意味します。
次の Sub は値を返さないサブルーチンを意味します。
では、今回作成したサブルーチンを見てみましょう。
Private Function CreateMotocyoData() As Boolean の最初の Private は先程
と同じで、このモジュール総勘定元帳印刷指示画面のフォーム)内だけで使用でき
るという意味です。
次の Function は値を返すサブルーチンである事を意味します。
このサブルーチンでは、元帳として表示するデータが有れば True を返し、データ
が無ければ False を返します。
最後の As Boolean がサブルーチンの返す値の型を示しています。
サブルーチンには、パラメータを渡すこともできますが、その辺は次の機会に解説
する事にします。
______________________________________
◆◇ 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.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【会計ソフト編】
発 行 : Yoshihisa Fukuda 2000.08.26 Vol.21
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は、総勘定元帳の印刷指示画面作成の続きです。
== ◇ 第3章 帳票 ====================
--------------------------------------
3-1 総勘定元帳
--------------------------------------
--------------------------------------
3-1-2 フォーム作成(続き)
--------------------------------------
その前に、前回またまた、抜けがありましたので、それをやりましょう。
補助科目コンボボックスの抽出条件の設定を行います。
1.補助科目コンボボックスを選択し、[値集合ソース]プロパティにカーソルを移動
したら、右端の[...]ボタンでクエリービルダーを開きます。
2.上段の[SubKamokuTable]の[ParentKamoID]をダブルクリックして、下段のフィー
ルドに設定します。
3.[ParentKamoID]フィールドの抽出条件に、Forms![MotoCyoRepForm]![KamokuCombo]
と設定します。
4.[×]ボタンでクエリービルダーを閉じます。
以上です。
では、ここからプログラミングに入ります。
1.勘定科目コンボボックスで選んだ勘定科目の名称を勘定科目名表示用テキスト
ボックスに設定します。
また、選んだ時、補助科目コンボボックスをクリアして、再クエリーもしておき
ましょう。
(1)勘定科目コンボボックスを選択し、[更新後処理]プロパティにカーソルを
移動して、[イベントプロシージャ]を設定します。
(2)[...]ボタンでモジュールウィンドウを開き、次のコードを入力します。
Private Sub KamokuCombo_AfterUpdate()
KamokuName = KamokuCombo.Column(2)
SubKamokuCombo = Null
SubKamokuCombo.Requery
End Sub
(3)[×]ボタンを押してモジュールウィンドウを閉じます。
2.次に元帳テーブルのデータを作成するサブルーチンを作りましょう。
サブルーチンに関しては今回のワンポイントで解説するとして、取りあえず
作ってみます。
(1)勘定科目コンボボックスを選択し、[更新後処理]プロパティにカーソルを
移動して、[...]ボタンでモジュールウィンドウを開きます。
(2)カーソルをモジュールウィンドウの一番下(何もない所)まで移動し、
以下のように入力したらエンターキーを押します。
Private Function CreateMotocyoData() As Boolean
(3)すると一行空いて、その下に End Function と自動的に表示されます。
(4)このサブルーチン(Private Function CreateMotocyoData() As Boolean
と End Function の間)の中に以下のコードを記述します。
______________________________________
◆◇ 注意 ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
横の文字数を削減するため以下の文字を置き換えて下さい。
※M は Motocyo_T.Fields ※S は Siwake_T.Fields
【例】
※M("DenpyoNo").Value = ※S("DenpyoNo").Value
は
Motocyo_T.Fields("DenpyoNo").Value = Siwake_T.Fields("DenpyoNo").Value
となります。
______________________________________
Dim Siwake_T As Recordset
Dim Motocyo_T As Recordset
Dim MotocyoNo As Integer
Dim SQL1 As String
Dim SQL2 As String
SQL1 = "SELECT SiwakeTable.SiwakeID, " & _
"SiwakeTable.DenpyoNo, SiwakeTable.DenpyoDate, " & _
"SiwakeTable.KariKamoID, SiwakeTable.KasiKamoID, " & _
"SiwakeTable.KariSubKamoID, SiwakeTable.KasiSubKamoID, " & _
"SiwakeTable.KariAmount, SiwakeTable.KasiAmount, " & _
"SiwakeTable.KariTax, SiwakeTable.KasiTax, " & _
"SiwakeTable.TekiyoUp, SiwakeTable.TekiyoDown " & _
"FROM SiwakeTable WHERE (((SiwakeTable.KariKamoID) = " & _
[Forms]![MotocyorepForm]![KamokuCombo] & " ) OR " & _
"((SiwakeTable.KasiKamoID) = " & _
[Forms]![MotocyorepForm]![KamokuCombo] & ")) " & _
"ORDER BY SiwakeTable.DenpyoDate, SiwakeTable.DenpyoNo;"
SQL2 = "SELECT SiwakeTable.SiwakeID, " & _
"SiwakeTable.DenpyoNo, SiwakeTable.DenpyoDate, " & _
"SiwakeTable.KariKamoID, SiwakeTable.KasiKamoID, " & _
"SiwakeTable.KariSubKamoID, SiwakeTable.KasiSubKamoID, " & _
"SiwakeTable.KariAmount, SiwakeTable.KasiAmount, " & _
"SiwakeTable.KariTax, SiwakeTable.KasiTax, " & _
"SiwakeTable.TekiyoUp, SiwakeTable.TekiyoDown " & _
"FROM SiwakeTable WHERE (((SiwakeTable.KariKamoID) = " & _
[Forms]![MotocyorepForm]![KamokuCombo] & ") AND " & _
"((SiwakeTable.KariSubKamoID) = " & _
[Forms]![MotocyorepForm]![SubKamokuCombo] & ") OR (" & _
"((SiwakeTable.KasiKamoID) = " & _
[Forms]![MotocyorepForm]![KamokuCombo] & ") AND " & _
"((SiwakeTable.KasiSubKamoID) = " & _
[Forms]![MotocyorepForm]![SubKamokuCombo] & "))" & _
"ORDER BY SiwakeTable.DenpyoDate, SiwakeTable.DenpyoNo;"
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE MotocyoTable.* FROM MotocyoTable"
DoCmd.SetWarnings True
Set Motocyo_T = CurrentDb.OpenRecordset("MotocyoTable")
If IsNull([Forms]![MotocyorepForm]![SubKamokuCombo]) Then
Set Siwake_T = CurrentDb.OpenRecordset(SQL1)
Else
Set Siwake_T = CurrentDb.OpenRecordset(SQL2)
End If
If Siwake_T.RecordCount < 1 Then
MsgBox "該当データがありません"
CreateMotocyoData = False
Exit Function
End If
Siwake_T.MoveFirst
MotocyoNo = 1
While Siwake_T.EOF = False
Motocyo_T.AddNew
※M("MotocyoID").Value = MotocyoNo
※M("DenpyoNo").Value = ※S("DenpyoNo").Value
※M("DenpyoDate").Value = ※S("DenpyoDate").Value
If ※S("KariKamoID").Value = CInt(Me![KamokuCombo]) Then
※M("KamokuID").Value = ※S("KariKamoID").Value
※M("AiteKamokuID").Value = ※S("KasiKamoID").Value
※M("SubKamokuID").Value = ※S("KariSubKamoID").Value
※M("AiteSubKamokuID").Value = ※S("KasiSubKamoID").Value
Else
※M("KamokuID").Value = ※S("KasiKamoID").Value
※M("AiteKamokuID").Value = ※S("KariKamoID").Value
※M("SubKamokuID").Value = ※S("KasiSubKamoID").Value
※M("AiteSubKamokuID").Value = ※S("KariSubKamoID").Value
End If
※M("KariAmount").Value = ※S("KariAmount").Value
※M("KasiAmount").Value = ※S("KasiAmount").Value
※M("KariTax").Value = ※S("KariTax").Value
※M("KasiTax").Value = ※S("KasiTax").Value
※M("TekiyoUp").Value = ※S("TekiyoUp").Value
※M("TekiyoDown").Value = ※S("TekiyoDown").Value
Motocyo_T.Update
Siwake_T.MoveNext
MotocyoNo = MotocyoNo + 1
Wend
Motocyo_T.Close
Siwake_T.Close
CreateMotocyoData = True
(5)[×]ボタンを押してモジュールウィンドウを閉じます。
今回のプログラムは少し複雑でした。
メールマガジンの横幅の制限があるため、まるで暗号の様になってしまい、申し訳
ありません。
皆さんは、お手数ですが、間違えない様、入力して下さい。
モジュールウィンドウには、置換機能(メニューの[編集]-[置換]もありますので
一度メールマガジンの通りに入力して、※Mと※Sを置き換える方法が良いでしょう。
このサブルーチンの呼び出しは、総勘定元帳のレポートを作成後、印刷ボタンの中で
行います。
【解説】
ここで簡単に解説をしておきます。
SQL1とSQL2は文字列型の変数で、SQL文を代入しています。
SQL1は補助科目の指定が無い場合、SQL2は補助科目の指定が有る場合のSQLです。
このSQLは仕訳テーブルから、勘定科目コンボボックスで指定された科目が、貸借
いずれかに使用されているレコードを抽出し、伝票日付と伝票番号で昇順にソート
するSQLです。
(SQLに関しては、別途解説します)
DoCmd.RunSQL "DELETE MotocyoTable.* FROM MotocyoTable" は元帳テーブルの
今あるデータを削除しています。
これもSQLを使用しています。(DoCmd.RunSQLでSQLを実行しています)
次に元帳テーブルと仕訳テーブルをオープンしています。
これにより、Motocyo_T と Siwake_T でテーブルにアクセスできます。
If Siwake_T.RecordCount < 1 Then は抽出した仕訳データ(元帳として表示する
データ)の件数をチェックし、データが無ければメッセージを表示した後、
リターン値をFalseにして、このサブルーチンを抜け出します。
データが有る場合、仕訳テーブル(抽出したデータ)を1件づつ読み出し、元帳
テーブルに書き込んでいきます。
全てのデータが処理し終わったら、テーブルをクローズし、リターン値をTrueに
してサブルーチンを終了します。
--------------------------------------
今回はここまでです。
次回は総勘定元帳のクエリー作成です。
______________________________________
◆◇ ワンポイントコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
【サブルーチン】
今回、また新たにサブルーチンが登場しました。
そこで、初心者の方のために、簡単にサブルーチンを解説しましょう。
サブルーチンとは、長いプログラムや、各箇所で同じ処理をする場合に共通で使用
できるようにしたプログラムの単位です。
何百ステップものプログラムを延々と書くと、後で見たとき、何処で何の処理を
しているかなど、探すのに一苦労します。
その様な場合、ある単位に分けて分割する事により、見易くメンテナンスも容易に
なります。
例えば、あるファイルからデータを読み込んで、加工した後、別のファイルに結果
を書き込む様なプログラムを書く場合、ファイルを読み込む処理、読み込んだデー
タを加工する処理、ファイルに書き込む処理などのサブルーチンに分割すると、
プログラムが非常に見易く、修正もしやすくなります。
また、同じ処理を色々な場面で使用する場合も、サブルーチンを一つ作ってしまえ
ば、後はそれを呼び出すだけで済みます。
そして、サブルーチン化する事により、動作チェックも個々のサブルーチン毎に
チェックすれば良く、プログラムに変更が生じた場合も、その部分のサブルーチン
を一つ修正するだけで済むため、プログラムの作成効率が大幅に良くなります。
サブルーチンには、幾つかの種類があります。
まず、全てのモジュール(フォーム)で共通に使用できるサブルーチンと同一の
モジュール(フォーム)内だけで共通に使用できるサブルーチンがあります。
それから、値を返すサブルーチンと返さないサブルーチンがあります。
Private Sub KamokuCombo_AfterUpdate() は今回の勘定科目コンボボックスの
更新後処理のサブルーチンです。
最初のPrivateとありますが、これはこのモジュール(ここでは総勘定元帳印刷
指示画面のフォーム)内だけで使用できる事を意味します。
次の Sub は値を返さないサブルーチンを意味します。
では、今回作成したサブルーチンを見てみましょう。
Private Function CreateMotocyoData() As Boolean の最初の Private は先程
と同じで、このモジュール総勘定元帳印刷指示画面のフォーム)内だけで使用でき
るという意味です。
次の Function は値を返すサブルーチンである事を意味します。
このサブルーチンでは、元帳として表示するデータが有れば True を返し、データ
が無ければ False を返します。
最後の As Boolean がサブルーチンの返す値の型を示しています。
サブルーチンには、パラメータを渡すこともできますが、その辺は次の機会に解説
する事にします。
______________________________________
◆◇ 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.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□