| Access実践入門 TOPへ |
| ■ マイクロソフトアクセス、請求一覧表、商品集計 | |
| 残計算 次のような一覧表の指定画面が出ます。 ![]() ホーム全体のプロパティの[開く時]に hick = DLookup("登録締切日付", "ta会社情報", "ID =1")とあります。 開始ボタンの[フォーカス取得時]のチェックで使うためです。 If DateValue([始め]) <= hick Then MsgBox ("締切日以前のデータは指定できません...") DoCmd.CancelEvent DoCmd.GoToControl "始め" Exit Sub End If それでは、残計算の手順です。 開始ボタンの[クリック時]は次のようになっています。 Call nzan(Me!日付始め, Me!日付終わり, Me!得意始め, Me!得意終わり, 得意締日) DoCmd.OpenForm "fo請求一覧", , , , acFormReadOnly nzan()のモジュールに処理をうつしています。 5項目の引数を括弧の中で指定します。 答えが、「to残計算」に作られ、次のような結果になります。 ![]() この答えを使った「qu請求一覧」をレコードソースにした、「fo請求一覧」が表示されます。 ![]() |
|
| 請求書と元帳 左端の明細ボタンで、元帳と請求書の処理ができます。 手順を説明します。 「明細ボタン」の[クリック時]で明細用の作業テーブルを作っています Private Sub 明細_Click() 1 DoCmd.OpenQuery "quto削除請求元帳" 2 DoCmd.OpenQuery "qu請求元帳追加伝票" 3 DoCmd.OpenQuery "qu請求元帳追加入金" 4 DoCmd.OpenQuery "qu請求元帳追加調整" 5 Dim dbs As Database 6 Dim rst_1 As Recordset 7 Dim i As Integer 8 Dim zan As Long 9 Set dbs = CurrentDb 10 Set rst_1 = dbs.OpenRecordset("qu請求元帳", dbOpenDynaset) 11 If rst_1.RecordCount = 0 Then 12 MsgBox ("明細がありません...") 13 rst_1.Close 14 Exit Sub 15 End If 16 zan = Form_fo請求一覧!繰越残高 17 rst_1.MoveFirst 18 Do Until rst_1.EOF 19 rst_1.Edit 20 If rst_1!伝票区分 = "2" Or rst_1!伝票区分 = "3" Then 21 zan = zan - rst_1!税込金額 22 Else 23 zan = zan + rst_1!税込金額 24 End If 25 rst_1!明細残高 = zan 26 rst_1.Update 27 rst_1.MoveNext 28 Loop 29 rst_1.Close 30 DoCmd.OpenForm "fo請求一覧明細", acNormal, , , acFormReadOnly End Sub 明細データは、「ta請求明細」にあります。 ただ、これには、入金データは含まれていませんし、その行毎の残高もありません。 答えの作業テーブル「to請求元帳」を作ります。 1行目で、「to請求元帳」の前レコードを削除する削除クエリーを実行します。 2行目で、伝票の明細を追加する追加クエリーを実行します。 3行目で、入金から、入金金額を追加する追加クエリーを実行します。 4行目で、入金から、調整額を追加する追加クエリーを実行します。 元帳は、金額欄は1つなので、入金額と調整額を横に並べて表示しないので、2つに分けて追加しています。 ここまでで、「qu請求元帳」を使えば、日付、伝票区分、行番号の順番で、明細が表示できますが、右端にそれぞれの残高を表示したいので、残計算をしておきます。 5〜8行目は、変数の宣言です。 9〜10行目は、いつものレコードセットのオープンです。 画面表示するクエリーを使います。 (同じ順序のクエリーでないと残計算が違ってきます) 16行目で、変数のzanに該当得意先の繰越残を代入します。 17行目で、1レコード目に移動。 18〜28行目で、全レコードを順番に開きます。 20行目の伝票区分2,3は入金ですので、残高はマイナスです。それ以外はプラスです。 各行にその行の残高を上書きします。 最後に、明細画面を表示しています。 「請求書印刷」と「元帳印刷」のボタンがあります。 ・請求書印刷 ここでは、自社名の欄をサブレポートにして、納品書と共通で使っています。 また、見栄えをよくするために、四角形の中にコントロールを貼っています。 こうすることで、右詰の数値が、罫線とかさならないように印字できます。 明細の摘要欄で、[重複データ非表示]を「はい」にしています。 これは、入金データで摘要を入力している場合に、入金と調整で同じものが上下に印刷されるのを防ぐためです、全く同じデータだった場合には、次の行には印刷されません。 「qu請求元帳追加調整」で、入金摘要の列を削除しておいてもいいと思いますが・・・ 請求書は、入力行のみの印刷となりますので、指定期間に、1行しかなければ1行だけの請求書になってしまいます。 請求書の場合、指定期間に数十行ある場合もあるでしょうから、何ページにも印刷する場合もあるでしょうし、一定の空白行を挿入して見栄えよく、印刷する場合は、複雑な処理が必要になるでしょう。 ・元帳印刷 請求書と同じようなデザインです。 明細の摘要も同じ処理をしています。 請求書、元帳とも、ここでは、得意先一件毎に、印刷することになりますが、 実務上は、得意先の範囲を指定して、一括で出す方が便利でしょう。 その場合は、「to請求元帳」にたくさんの得意先が入りますので、モジュールの中で、右端の残計算をする場合も、違うものにしなければいけないでしょう。 |
|
| 商品集計 商品の集計は残計算が無いので簡単です。 ![]() ここでは、初めに日付と、締切日付とのチェックもしていません。 もし、指定されても、データが無いので出ないだけです。 ![]() 選択クエリーだけで、すべて処理できます。 |
|