Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


372 / 9994 ←次へ | 前へ→

【12935】funcKEISANを実験してみた
発言  かるびの  - 16/2/5(金) 1:47 -

引用なし
パスワード
    次のコードを、サンプルを作って試してみました。

>Dim SIRE As Long,ZEI As Long,GOKEI As Long
>Function funcKEISAN()
>  SIRE = SIRE + Me.SIRE
>  ZEI = ZEI + Me.ZEI
>  GOKEI = GOKEI + Me.GOKEI
>End Function
>
>Private Sub ページフッターセクション
>  Me.仕入計 = SIRE
>  Me.税計 = ZEI
>  Me.合計計 = GOKEI
>End Sub

 その結果、
>10ページ目だけを印刷した場合に10ページの部分のみの数値が計算されてしまいます。
という事態には至らず、ページフッタの合計を表示するテキストボックスには、
1ページ目のレコードの合計額と10ページ目の合計額の併せた数値が表示されました。


 maiu さんにおける設定とは異なっているはずですので、
当方のサンプルの概要を記載しておきます。
 なお、オブジェクトの命名方法に統一性がなく、いつもならそんな命名方法はしませんが、
サンプルなので、その点は御容赦。


テーブル構成
 テーブル名 T仕入れ
 フィールド
  ID オートナンバー 主キー
  取引先 テキスト型
  仕入額 長整数型


レポート
 レポート名 R仕入れ_関数実験
 レコードソース T仕入れ
 配置したコントロール
  txtID    (詳細セクションに配置。コントロールソースは「ID」フィールド)
  txt取引先  (詳細セクションに配置。コントロールソースは「取引先」フィールド)
  txt仕入額  (詳細セクションに配置。コントロールソースは「仕入額」フィールド)
  txt関数   (詳細セクションに配置。コントロールソースは「=funcKEISAN()」)
  txtPageSum (ページフッタに配置。非連結コントロール。仕入額のそのページまでの合計を表示)          


標準モジュール
Dim lngSiire AS Long    ’パブリック変数

Function funcKEISAN() AS Long
  lngSiire = lngSiire + Reports!R仕入れ_関数実験!txt仕入額

  Debug.Print "ID:" & Reports!R仕入れ_関数実験!txtID.Value

  funcKEISAN = 9
End Function

Sub SrPageFooterSection()
  Reports!R仕入れ_クエリ実験!txtPageSum.Value = lngSiire
End Sub

        
「R仕入れ_関数実験」のモジュール 
Private Sub ページフッターセクション_Print(Cancel As Integer, PrintCount As Integer)
  Call SrPageFooterSection
  
  Debug.Print "PageFooterSection_Printイベント,Page=" & Me.Page
End Sub
 
 
 なお、上記における「Debug.Print」のコードですが、
「funcKEISAN」プロシージャや「ページフッターセクション_Print」プロシージャの
挙動を確認するためのコードです。
 当該ページまでの仕入額の合計表示には全く関係のないコードです。


 以上の構成の下で、
まず、R仕入れ_関数実験を開きます。レポートは全4ページからなっています。
 次に、アクセスのメニューの印刷コマンドを選択し、3ページ目だけを印刷します。

 すると、3ページ目のtxtPageSumには、
1ページ目のレコードの仕入額の合計と3ページ目の仕入額の合計を併せた額が表示されました。


 冒頭のコードについては、私の前レスでは、
> というのは、ページフッタが印刷される時点において、
>変数SIRE等の値が、当該ページにおける最終レコードまでの仕入額等の合計額となっている
>保証がないからです。
> なので、これらのプロシージャを使って、仕入額等の合計を出すのは不安です。
と書きましたが、
実験の結果、冒頭のコードでも、実用的にはいけそうだなと思いました。

 しかし、これは経験則に過ぎず、理論的なバックボーンを持ちません。
 つまり、txt関数のコントロールソースに設定した「=funcKEISAN()」が
どのタイミングで実行されるのか、必ずしもはっきりしません。
 そのため、不安払拭には至りません。
152 hits

【12931】ページフッターの合計 maiu 16/2/3(水) 17:02 質問[未読]
【12932】Re:ページフッターの合計 maiu 16/2/3(水) 17:05 質問[未読]
【12934】Re:ページフッターの合計 かるびの 16/2/5(金) 0:29 回答[未読]
【12935】funcKEISANを実験してみた かるびの 16/2/5(金) 1:47 発言[未読]
【12940】Re:ページフッターの合計 maiu 16/2/10(水) 11:57 お礼[未読]

372 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078190
(SS)C-BOARD v3.8 is Free