Access VBA質問箱 IV

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

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


1747 / 2272 ツリー ←次へ | 前へ→

【5452】ページ計のあるレポートの作成について あおぎん 05/6/21(火) 15:42 質問[未読]
【5459】Re:ページ計のあるレポートの作成について 小僧 05/6/21(火) 17:13 発言[未読]
【5463】Re:ページ計のあるレポートの作成について あおぎん 05/6/21(火) 18:30 質問[未読]
【5471】Re:ページ計のあるレポートの作成について あおぎん 05/6/22(水) 9:33 質問[未読]
【5472】Re:ページ計のあるレポートの作成について 小僧 05/6/22(水) 10:39 回答[未読]
【5478】Re:ページ計のあるレポートの作成について あおぎん 05/6/22(水) 15:28 質問[未読]
【5479】Re:ページ計のあるレポートの作成について 小僧 05/6/22(水) 16:20 回答[未読]
【5481】Re:ページ計のあるレポートの作成について あおぎん 05/6/22(水) 17:32 お礼[未読]

【5452】ページ計のあるレポートの作成について
質問  あおぎん  - 05/6/21(火) 15:42 -

引用なし
パスワード
   金融機関への振込み依頼書を作成したいのですが、

レポートの項目として、

・金融機関コード
・名義人
・振込金額

があり、

様式の条件として、
・1ページが15件ずつであること
・ページの小計(振込金額の計)があること
・総振込金額が1ページめに表示されること

が必要になります。

15件ずつの記載は、ヘルプ等を参考にできたのですが、
ページの小計と、レポート計の1ページ目での表示がうまくできません。

ページ小計は
ネットで検索して、

『ぺージフッターに空のテキストボックス(名前はtxt_PageCount)を配置します。
「詳細セクション」の「印刷時イベント」を利用して、
「詳細セクション」にある振込額テキストボックス(名前はtxt_Count)の値を
テキストボックスtxt_PageCountに次々と加算していく方法です。
それには、「ページフッター」の「フォーマット時イベント」を利用して
テキストボックスtxt_PageCountの値をその都度 0 にして、ページごとに集計を独立させます』

という方法で表示させるようにしました。

『Option Compare Database

 Private Sub ページヘッダーセクション_Format(Cancel As Integer,   FormatCount As Integer)

  'txt_PageCountは、「ページヘッダー」で合計を求めるテキストボックスです。
  Me.TXT_PAGECOUNT = 0
End Sub

Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
  
   Me.TXT_PAGECOUNT = Me.TXT_PAGECOUNT + Me.TXT_COUNT
End Sub』

としたのですが、小計がうまく計算できていないようです。
1ページ目は正しいのですが、2ページ以降、そのページの15件のレコードだけでなく、別のレコードも足しているようです。

レポート計を1枚目に表示させる方法はいろいろ検索してもよくわからなくて、
今までは、手で書いてました・・。


様式の条件を満たすレポートの作成方法がありましたら、どうか教えてください。
よろしくお願いいたします。

【5459】Re:ページ計のあるレポートの作成について
発言  小僧  - 05/6/21(火) 17:13 -

引用なし
パスワード
   ▼あおぎん さん:
こんにちは。

>レポート計を1枚目に表示させる方法はいろいろ検索してもよくわからなくて、
>今までは、手で書いてました・・。

これについては DSum 関数が使えると思います。

レポートヘッダーにテキストボックスを配置し、コントロールソースに

=DSum("振込金額","テーブル名")

と記入すると合計金額が出力されると思います。


>小計がうまく計算できていないようです。

こちらについてですが、当方の環境ですとご提示のコードでページ毎の小計が
きちんと表示されていました。
どううまくいってないかが解らないので、振込金額を1レコード目から順に
「1」「2」「3」として、2ページ目の小計がいくつになるかを検証してみては
いかがでしょうか?

【5463】Re:ページ計のあるレポートの作成について
質問  あおぎん  - 05/6/21(火) 18:30 -

引用なし
パスワード
   ▼小僧 さん:
さっそくのお返事ありがとうございました。

少し言葉が足りなかったので・・。
レポート計を表示させたいのは、ページの下のほうなのです。

なので、教えていただいたことを参考に、ページヘッダーにDSum関数を配置してみましたら、表示させることができました。ありがとうございます。

さらにお伺いするのですが、2枚め以降は合計表示は不要なのですが、1枚目のみ表示させる方法はありますでしょうか?


小計の表示ですが、
表示されているレコードの振込金額を、1,2、3・・・としてレポートで表示させてみました。

2ページ目は16〜30の和で345となるはずが、360(+15)と表示され、
3ページ目は31〜45の和で570となるはずが、600(+30)と表示され、
4ページ目は46〜60の和で795となるはずが、840(+45)と表示されました。
どうやら、前のページの最終行の数値が加算されてしまうようです。


このレポートには、ほかに15件づつ表示させるための

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
   '1 ページの表示レコード件数を 15 件にしています。
   If Me!txtcount Mod 15 = 0 Then
    Me!bpage.Visible = True
   Else
    Me!bpage.Visible = False
   End If

End Sub

という記述をした以外には、プロシージャは記述していません。
また、金融機関の昇順にデータを並べていますが、グループ化等は行っていません。

何か原因が考えられますでしょうか。

よろしくお願いします。

【5471】Re:ページ計のあるレポートの作成について
質問  あおぎん  - 05/6/22(水) 9:33 -

引用なし
パスワード
   訂正・・・
 DSum関数を配置したのは、ページヘッダーでなくページフッターでした。


小計の表示ですが
前に書いたように

15件ずつ表示させるために
連番をふるtxtcountというテキストボックスを配置し、
改ページ(bpage)を配置して

 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
  '1 ページの表示レコード件数を 15 件にしています。
   If Me!txtcount Mod 15 = 0 Then
    Me!bpage.Visible = True
   Else
    Me!bpage.Visible = False
   End If

 End Sub
 
という記述をしていたのですが、

これを削除してみたところ
小計がきちんと表示されるようになりました。

15件ずつの表示は、レポートのページ設定等の調整によりできそうなので、問題はないといえばないのですが、ページ計と、表示データ数の指定の両方を求める方法はないでしょうか?

方法があれば知りたいなと思います。
よろしくお願いいたします。

【5472】Re:ページ計のあるレポートの作成について
回答  小僧  - 05/6/22(水) 10:39 -

引用なし
パスワード
   ▼あおぎん さん:
おはようございます。

あおぎん さんの問題点、こちらでも再現致しました。
なんで最終レコードの値が読まれているのかは解決していませんが、
とりあえずの解決策です。
(本当にとりあえずなので、他に問題があるかもしれません。)

>2枚め以降は合計表示は不要なのですが、
>1枚目のみ表示させる方法はありますでしょうか?

ヘッダーは「ページヘッダー」と「レポートヘッダー」の2種類ありますよね。


>小計がうまく計算できていないようです。
本当にその場しのぎなので申し訳ないのですが、

Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
Dim Cnt As Long
  Cnt = 0
  If PrintCount = 1 Or (PrintCount > 1 And Cnt >= 1) Then
    Me.txt_PageCount = Me.txt_PageCount + Me.txt_Count
  End If
  Cnt = Cnt + 1
End Sub

こんな感じでうまくいくと思われますがいかがでしょうか?

【5478】Re:ページ計のあるレポートの作成について
質問  あおぎん  - 05/6/22(水) 15:28 -

引用なし
パスワード
   ▼小僧 さん:

回答ありがとうございます。


>ヘッダーは「ページヘッダー」と「レポートヘッダー」の2種類ありますよね。

申し訳ありません。
レポート計をページヘッダーに配置していました。
レポートヘッダーに配置しなおしましたが、レポートヘッダーだと
いちばん最後のページに表示されますよね(あたりまえですが(汗))。
これを1枚目の下のほう、ページ計の下に表示させるのはむずかしいでしょうか?

何度も質問してすみません。


>本当にその場しのぎなので申し訳ないのですが、
>
>Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
>Dim Cnt As Long
>  Cnt = 0
>  If PrintCount = 1 Or (PrintCount > 1 And Cnt >= 1) Then
>    Me.txt_PageCount = Me.txt_PageCount + Me.txt_Count
>  End If
>  Cnt = Cnt + 1
>End Sub
>
>こんな感じでうまくいくと思われますがいかがでしょうか?

さっそくやってみて、プレビューさせてみたら、
きちんと計算されていたので喜んでいたのですが、
いったん閉じてまた開くと、
また前ページの最終行を足していました。
再度プレビューさせるときちんとなっていたり、
何度かプレビューさせてみるたび、
きちんとなっているページがまちまちで
表示に揺れ?があるようなのですが・・。

小僧さんのほうではそういうことはないですか??

お手数をおかけしますが、よろしくお願いします。

【5479】Re:ページ計のあるレポートの作成について
回答  小僧  - 05/6/22(水) 16:20 -

引用なし
パスワード
   ▼あおぎん さん:
こんにちは。

>レポート計をページヘッダーに配置していました。
>レポートヘッダーに配置しなおしましたが、レポートヘッダーだと
>いちばん最後のページに表示されますよね(あたりまえですが(汗))。
>これを1枚目の下のほう、ページ計の下に表示させるのはむずかしいでしょうか?

最初のページの上に表示されるのは「レポートヘッダー」
最後のページの下に表示されるのは「レポートフッター」

でなく、1ページ目のフッターに表示させたい、と言う事ですよね?

ページフッターに
テキストボックス:txt_合計
         コントロールソース =DSum("振込金額","テーブル名")
を配置して

Private Sub ページフッターセクション_Format(Cancel As Integer, FormatCount As Integer)
  If Me.Page = 1 Then
    Me.txt_合計.Visible = True
  Else
    Me.txt_合計.Visible = False
  End If
End Sub

>小僧さんのほうではそういうことはないですか??

すいません、当方の完全な検証ミスです。

一番上の「Private Sub XXX」の更に上に、

Private Cnt As Long

と宣言して

Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
  If Me.Page = 1 Or (Me.Page > 1 And Cnt >= 1) Then
    Me.txt_PageCount = Me.txt_PageCount + Me.txt_Count
  End If
  
  Cnt = Cnt + 1
End Sub

「Private Sub ページヘッダーセクション_Format」 の中で

  Cnt = 0

と初期化してみて下さい。

【5481】Re:ページ計のあるレポートの作成について
お礼  あおぎん  - 05/6/22(水) 17:32 -

引用なし
パスワード
   ▼小僧 さん:


>最初のページの上に表示されるのは「レポートヘッダー」
>最後のページの下に表示されるのは「レポートフッター」
>
>でなく、1ページ目のフッターに表示させたい、と言う事ですよね?

ごめんなさい。
慌てるあまり
ヘッダーとフッター、ページとレポートを混同してました。
おっしゃるとおりで、1ページ目のフッターに表示させたかったのです。

で、おっしゃるとおりにしたら、ページ計、レポート計ともに
うまくいきました。

本やヘルプを見てもわからず
すがる思いで投稿したのですが、
丁寧に教えていただきほんとうに助かりました。
ほんとうにありがとうございました。

1747 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078263
(SS)C-BOARD v3.8 is Free