Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2010)
レポートヘッダーの上にページヘッダーを置きたい
投稿日時: 20/09/16 19:34:57
投稿者: 滝沢

[a]請求書(タイトル)、請求書番号、ページ番号 等
[b]請求合計金額、当社名 等
[c]商品明細
 
[a]全ページ 上から2cm〜7cm
[b]1ページ目 上から7cm〜12cm
   2ページ目以降 無し
[c]1ページ目 上から12cm〜
   2ページ目 上から7cm〜
 
このようにしたいんですが、理屈的に
[a]ページヘッダー
[b]レポートヘッダー
[c]詳細
ですよね?
 
ただ、レポートを作成しているとページヘッダーはレポートヘッダーの下に表示されてしまいます。
入れ替えることはできないでしょうか?
 
よろしくお願い致します。

回答
投稿日時: 20/09/17 09:44:40
投稿者: Suzu

引用:
[a]請求書(タイトル)、請求書番号、ページ番号 等
引用:
このようにしたいんですが、理屈的に
[a]ページヘッダー

 
[a]ページヘッダー 要素としては、ページ番号 だけ の様に拝見するのですが。。
ページごとに、請求書の名前、請求書番号が変わるのですか?
 
ページ番号 が ページフッター では駄目なのでしょうか?

投稿日時: 20/09/17 10:19:41
投稿者: 滝沢

Suzu様
コメントありがとうございます。
 
>ページごとに、請求書の名前、請求書番号が変わるのですか?
変わりません。
 
>ページ番号 が ページフッター では駄目なのでしょうか?
できれば請求書番号の隣に置きたいですが、最悪はフッターでも構いません。
 
これであれば可能でしょうか。
よろしくお願い致します。

投稿日時: 20/09/17 11:29:54
投稿者: 滝沢

色々調べて試していたらレポートのプロパティの「ページヘッダー」を「レポートヘッダー以外」
にして下記ように配置したら希望の印刷ができました。
 
・レポートヘッダー
[a]請求書(タイトル)、請求書番号、ページ番号 等
[b]請求合計金額、当社名 等
 
・ページヘッダー
[a]請求書(タイトル)、請求書番号、ページ番号 等
 
・詳細
[c]商品明細
 
ただ、同じ内容をズレないように配置しないといけないので修正時がめんどくさそうです。
入れ替えができるのが理想的ですが、こちらのサイトを見る限り「できない」が答えなんですかね。
https://www.sk-access.com/syo_report/sra004_section.html
 
よろしくお願い致します。

回答
投稿日時: 20/09/17 15:45:00
投稿者: Suzu

すみません。
問題点を読み違えていました。
 
フッターの件は忘れてください。
 
 
ただ、同じ内容をズレないように配置しないといけないので修正時がめんどくさそうです。
入れ替えができるのが理想的ですが、こちらのサイトを見る限り「できない」が答えなんですかね。
 
印刷位置の入れ替えは出来なかったと思います。
 

引用:
修正時がめんどくさそうです

手の込んだレポート作成の場合には、修正時面倒になる事は多いです。
 
位置合わせ程度であれば
それこそVBAで処理してしまえば済む話です。
 
 
ページヘッダーのコントロールを、レポートヘッダーのコントロールに合わせて位置とサイズを揃えます。
事前に、同期を取り揃えたいコントロールの「タグ」プロパティーに同じ文字を入れてください。
 
レポートをデザインビューにて開き レポートヘッダー側のコントロールの位置・サイズを変え
VBA実行
 
Sub Sumple()
    Dim rep As Report
    Dim obj0 As Object
    Dim obj1 As Object
 
    Set rep = Reports("レポート名")
 
    For Each obj0 In rep.Section(acHeader).Controls
        If Len(obj0.Tag) > 0 Then
            For Each obj1 In rep.Section(acPageHeader).Controls
                If obj1.Tag = obj0.Tag Then
                    obj1.Left = obj0.Left
                    obj1.Top = obj0.Top
                    obj1.Width = obj0.Width
                    obj1.Height = obj0.Height
                End If
            Next
        End If
    Next
End Sub

回答
投稿日時: 20/09/17 17:04:06
投稿者: sk

引用:
>ページごとに、請求書の名前、請求書番号が変わるのですか?
変わりません。

引用:
[b]請求合計金額、当社名 等

引用:
[b]レポートヘッダー

[請求書番号]レベルのグループヘッダーセクションに
配置すれば済むのではないでしょうか。

回答
投稿日時: 20/09/18 09:17:38
投稿者: Suzu

引用:
[請求書番号]レベルのグループヘッダーセクションに
配置すれば済むのではないでしょうか。

あ。。。 失礼しました ^^;

投稿日時: 20/09/18 16:18:21
投稿者: 滝沢

sk様、Suzu様
コメントありがとうございます。
グループヘッダーで作成してみました。
 
これでできそうに思えたんですが、少しおかしな結果になったので確認したところ、
実は下記のように[b]と[c]の間に、全ページに載せたい[d]がありました。
 
[a]全ページ:請求書(タイトル)、請求書番号、ページ番号 等
[b]1ページ目のみ:請求合計金額、当社名 等
[d]全ページ:明細の項目名(商品名、単価、等) ←コレ
[c](商品明細)
 
ページヘッダー
[a]
 
グループヘッダー
[b]
[d](←これだと1ページ目にしか印字されない)
 
詳細
[c]
 
これだとできませんかね?
よろしくお願い致します。

回答
投稿日時: 20/09/19 11:03:38
投稿者: hatena
投稿者のウェブサイトに移動

現在の請求書番号グループヘッダーの下に、さらに請求書番号でグループ化したグループヘッダーを追加します。(おなじフィールドに対して複数のヘッダーを追加できます。)
 
2番目の請求書番号グループヘッダーに
[d]全ページ:明細の項目名(商品名、単価、等)
を配置します。
このグループヘッダーの「セクション繰り返し」プロパティを「はい」にすれば[d]は全ページ表示されます。
 
ページヘッダー
[a]
  
グループヘッダー0 ←[セクション繰り返し: いいえ]
[b]
 
グループヘッダー1 ←[セクション繰り返し: はい]
[d]
  
詳細
[c]

投稿日時: 20/09/23 19:50:07
投稿者: 滝沢

hatena様
コメントありがとうございます。
 
>(おなじフィールドに対して複数のヘッダーを追加できます。)
これでうまくいきました!
メンテも簡単にできそうです。
ありがとうございます。
 
Suzu様、sk様も色々とありがとうございます。
勉強になりました。
 
ありがとうございます。