Access 2003 データベースに、VBA で生成された従業員のステータス/フィードバック レポートがあります。VBA でレポートを作成するのは、レポートの目的の書式設定が、この方法 (複数のレコードセットを結合する、レコードセットから複数のレコードを他のレコードセットと並べて表示する、いくつかの書式要素に基づいてカスタマイズする) のほうが簡単であることがわかったからです。部門など)。これらのレポートを作成するためのより良い方法があるかもしれませんが、これは問題なく機能しているため、できれば再作成は避けたいと思います。
私の問題は次のとおりです。これは従業員のフィードバック フォームであるため、上司が見たいが従業員には見せたくない詳細があります。レポートが生成されると、スーパーバイザーはデータを確認したり、レポート自体から変更を加えたりする機会があります (ユーザーフォーム、レポートのイベント処理を介して)。レビューの一部は、1 セットのフィールド (ラベルとしてレポートに追加されたもの) を確認することですが、これらのフィールドは、レポートが最終的に印刷されるときに非表示にする必要があります。
頭の中で、この方法で特定のコントロールを非表示にする方法を以前に見たことがあると思い、Google でこの MSDN リソースを検索しましたDisplayWhen
。ただし、DisplayWhen
フォームでのみ使用できるようです。レポートを使用してこの値 (または同様の/関連するオプション) を設定する方法はありますか? SO で検索を行ったところ、DisplayWhenのクエリで 1 つの質問しか見つかりませんでしたが、これは役に立ちませんでした。
.Visible = False
スーパーバイザーはこれらのフィールドを表示する必要があるため、レポートのレポートの作成に使用しても機能しません。イベント処理オプションがないため、印刷時にこのプロパティを設定できるようには見えません。印刷コマンドをキャプチャするカスタム イベント ハンドラーを作成できますか?
コントロール作成コードは次のとおりです。
Private Sub AddOneOnOneField(Rpt As Report, Left As Integer, Top As Integer, Width As Integer, Height As Integer, _
Optional Cap As String = vbNullString, Optional Align As Integer = cnFontCenter, Optional Size As Integer = 10, _
Optional Bold As Integer = cnBoldFont, Optional DisplayWhen As Byte = 0)
With CreateReportControl(Rpt.Name, acLabel, acDetail, vbNullString, vbNullString, _
Left, Top, Width, Height)
.Properties("FontSize") = Size
.Properties("FontWeight") = Bold
.Properties("BorderStyle") = 1
.Properties("TextAlign") = Align
.Properties("Caption") = Cap
.Properties("DisplayWhen") = DisplayWhen ' This does not work!
End With
End Sub
私の質問を繰り返すには:
- 特定のレポート フィールドを印刷プレビューでのみ表示し、印刷では表示しないように設定するにはどうすればよいですか?
- レポートから印刷コマンドを取得するカスタム イベント ハンドラーを作成できますか?
DisplayWhen
レポート フィールドにプロパティ (または類似/関連オプション)を設定する方法はありますか?