Microsoft Access Club Access超初心者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルレポートの重ね順
記事No83155
投稿日: 2017/10/15(Sun) 22:47
投稿者あずさ
解決済: ON
OS:windows7
Access Version:2010
こんにちは。お世話になります。
スケジュール管理レポートでmovelayoutをFalseにして、
日毎のレコードの印刷位置をvbaで制御しています。
スケジュール表なので、見やすくするため、時間帯ごとの罫線を引きました。

予定内容が入るテキストボックスが上に来るように罫線はすべて「最背面へ移動」しましたが、
1件目のレコード以外はテキストボックスの上に罫線が来てしまいます。
試しにテキストボックスを「最前面へ移動」してみましたが、同じでした。
また、テキストボックスの塗りつぶしを指定し、
VBAでテキストボックス位置の配置時にBackColorの指定も行いましたが、同じでした。

これまで独学でやってきたため、レポートの基本的なレイアウトメカニズムが理解できていないと思うのですが、何か良い方法はありますでしょうか。

よろしくお願いいたします。

タイトルRe: レポートの重ね順
記事No83156
投稿日: 2017/10/16(Mon) 03:29
投稿者hatena
解決済: ON
> スケジュール管理レポートでmovelayoutをFalseにして、
> 日毎のレコードの印刷位置をvbaで制御しています。
> スケジュール表なので、見やすくするため、時間帯ごとの罫線を引きました。
>
> 予定内容が入るテキストボックスが上に来るように罫線はすべて「最背面へ移動」しましたが、
> 1件目のレコード以外はテキストボックスの上に罫線が来てしまいます。
> 試しにテキストボックスを「最前面へ移動」してみましたが、同じでした。
> また、テキストボックスの塗りつぶしを指定し、
> VBAでテキストボックス位置の配置時にBackColorの指定も行いましたが、同じでした。
>
> これまで独学でやってきたため、レポートの基本的なレイアウトメカニズムが理解できていないと思うのですが、何か良い方法はありますでしょうか。


MoveLayoutをFalseにするということは、同位置に複数のレコードを重ね書きしているということですね。

1レコード目を出力してから、2レコード目以降を同じ位置に重ね書きすることになりますので、当然、2レコード目の罫線は、1レコード目のテキストボックスの上に描画されます。

重ね書きする2レコード以降は、VBAで罫線を非表示にすればどうでしょうか。

タイトルRe^2: レポートの重ね順
記事No83157
投稿日: 2017/10/16(Mon) 10:21
投稿者あずさ
解決済: ON
hatena様

ありがとうございます!

やはり、レポートの基本的な構造を誤って理解しておりました。
なぜか、罫線だけは一度しか描画されないという認識でいました。
テキストボックスが重なるので、罫線も当然描かれますよね。

ということは、最初のレコードだけ前面に来ていたというのも勘違いですね。
最後のレコードだけが最前面に表示されていたと言う事なんですね。
大変勉強になりました。

各罫線にタグを付け、以下のコードを加えるとうまくいきました。

Dim ctl as Control
For Each ctl In Me.Controls
If ctl.Tag = "ksen" Then
ctl.Visible = IIf(Me.CurrentRecord = 1, True, False)
End If
Next ctl

ありがとうございました。
また何かありましたら、よろしくお願いいたします。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る