- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:レポートから不要な行と列を消すには?)
レポート作成時のバグについて質問
このQ&Aのポイント
- レポート作成時において、列のみを非表示にする方法がうまくいかないバグが発生しています。
- 行を消すことはできるが、列の非表示にするという処理は失敗しています。
- 23年前に同様の問題にぶつかっており、その時は解決したはずですが、再び同じバグが発生しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
今日は よく分かりませんがレポートデザインの見直しではないですか メインテーマとサブ✍テーマのデータソースは別のテーブルでリレーションシップで繋がっていますよね >Len(Me.列5 & "") これは何ですか、Len(Me.列5 )と同値では?
お礼
>Len(Me.列5 & "") これは何ですか、Len(Me.列5 )と同値では? 同値ではありませんよ。マイクロソフトが示しているヌル値エラーを回避する書き方の一つです。 で、問題は、 Me.詳細.Visible = Len(Me.列5 & "") は、論理式として成立するが Me.テキスト19.Visible = Not Len(Me.列5 & "") は、なぜゆへに常に True という判定になるのかってことです。 昨日、午前4時にから、この問題の解明に取り組んで、昨晩の23時過ぎに答えらしきものに到達しました。その答えが、正しいのか否かは今から検証します。で、次は、たった今行った検証テストの結果です。 【0と1の論理判定で失敗するケースと成功するケース】 [イミディエイトウインドウ] ? Cbool(0) False ? CBool(1) True ? Cbool(Not 0) ← 0 でもTrue True ? Cbool(Not 1) ← 1 でもTrue True で、改めて、マイクロソフトのサイトで 《Not 演算子》についての説明を確認すると ※※※※※※※※※※※※※※※※※※※※ Not 演算子:result = Not expression ※※※※※※※※※※※※※※※※※※※※ つまり、Not 演算子は、《式を判定する》とのこと。で、次のように、0と1を式に書き替えると ? Cbool(Not 0>0) True ? Cbool(Not 1>0) False ? Cbool(Not Cbool(0)) True ? Cbool(Not Cbool(1)) False と、正しい真偽判定の結果を得ることが出来ました。 Private Sub グループヘッダー3_Format(Cancel As Integer, FormatCount As Integer) Me.テキスト19.Visible = Not CBool(Len(Me.列5 & "")) End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) Me.詳細.Visible = Len(Me.列5 & "") End Sub そこで、レポートのVBAコードを上記のように修正。で、レポートを表示して結果を確認。すると、見事に不要な表示が消えてしまいました。 このバグを潜ませる書き方問題には、1996年にも遭遇。 Not Value ↓ Not Value > 0 当時は、確か、こういう書き方をすることで回避していたと記憶します。このことを思い出すのに費やした時間は18時間。23年間のブランクって実に怖ろしいものです。