• ベストアンサー

Access2003 レポートの表示方法に関して

当方Access2003利用者です。 テーブル上では、「処理1」「処理2」という異なったフィールドを作成しておりますが、レポート上では【処理】欄だけとし、 「処理2」が空白であれば「処理1」の内容を表示、 「処理2」が空白でなければ「処理2」の内容を表示といった形にしたいと考えています。 現在、 If Me.処理2.value = "" Then   Me.処理2.Visible = False Else Me.処理1.Visible = False という形で記述していますが、うまくいきません。 どのように記述すればよいのでしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

> テーブル上では、「処理1」「処理2」という異なったフィールドを作成しておりますが、 > レポート上では【処理】欄だけとし、 レポートの『レコードソース』を、現在のテーブルから、そのテーブルを基にしたクエリに 変更されてはいかがでしょうか。 つまり、クエリに『【処理】』フィールドという演算フィールドを作成し、レポートでのデータ 表示にはそのフィールドを使用する、ということです。 (クエリのデザインビューで、『フィールド:』欄に以下のような式を指定します)  【処理】: IIF(IsNull([処理2]), [処理1], [処理2]) これであれば、レポートのコントロールのVisibleプロパティを切り替える必要はなくなる と思います。 ※私自身はレポートは殆ど使用しないのですが(汗)、少なくともフォームのコントロール   の場合は、Visibleプロパティは全レコードで共通(=先頭レコードでの評価結果が   全レコードに適用される)ので・・・。   (レポートでは各レコードの値で個別判定されるのでしたらすみません(汗))

SIBUSA
質問者

お礼

ありがとうございました♪

その他の回答 (4)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

詳細に表示するならば、処理欄という非連結のテキストボックスと コントロールソースがそれぞれ処理1、処理2のテキストボックス 処理1、処理2を同じ詳細に設定し、処理欄のコントロールソースを =IIf(IsNull([処理2]),[処理1],[処理2]) とし、処理1、処理2は重ねておいて両方「可視」を「いいえ」にすれば いいです。 念のために処理1、処理2を可視を「はい」にして 処理欄にデータが意図通りに入っているか確認 してください。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.4

レポート上のテキストボックス名を「処理」とし、 コントロールソースを =Nz([処理2],[処理1]) とすれば、VBA は必要ないですね。 to DexMachina さん > (レポートでは各レコードの値で個別判定されるのでしたらすみません(汗)) はい、レポートでは各レコードの値で個別判定です。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

なら 処理2の背景スタイルを『普通』にして、色は・・白とか 処理1は特に設定する必要はありません。(常に表示) で、処理2を処理1の上に重ねて(気持ち大きめ)置いておきます。 (処理2を、書式→最前面へ移動) あとは詳細のフォーマットイベントで Me.処理2.Visible = Nz(Me.処理2, "") = "" では? 印刷時拡張してたりして (^^ゞ

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

レポートの詳細のフォーマット時イベントで Me.処理1.Visible = Nz(Me.処理2, "") = "" Me.処理2.Visible = Nz(Me.処理1, "") = "" で出来ませんかね? 条件付き書式でも良さそうな気もしますが 以下蛇足 ※処理1 と 処理2 のコントロールは二つ並べて置いてあるのですよね? 重ね合わせておいてあれば、両方にデータが入っていた場合は?

SIBUSA
質問者

補足

両方に入っていた場合は、処理2のみ表示です。2つのコントロールは重ねて置いてます。処理2がある場合はうまくいくんですが、処理1のみの場合何も表示されなくなってしまいます。

関連するQ&A