- ベストアンサー
Access2003 レポートの表示方法に関して
当方Access2003利用者です。 テーブル上では、「処理1」「処理2」という異なったフィールドを作成しておりますが、レポート上では【処理】欄だけとし、 「処理2」が空白であれば「処理1」の内容を表示、 「処理2」が空白でなければ「処理2」の内容を表示といった形にしたいと考えています。 現在、 If Me.処理2.value = "" Then Me.処理2.Visible = False Else Me.処理1.Visible = False という形で記述していますが、うまくいきません。 どのように記述すればよいのでしょうか? 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> テーブル上では、「処理1」「処理2」という異なったフィールドを作成しておりますが、 > レポート上では【処理】欄だけとし、 レポートの『レコードソース』を、現在のテーブルから、そのテーブルを基にしたクエリに 変更されてはいかがでしょうか。 つまり、クエリに『【処理】』フィールドという演算フィールドを作成し、レポートでのデータ 表示にはそのフィールドを使用する、ということです。 (クエリのデザインビューで、『フィールド:』欄に以下のような式を指定します) 【処理】: IIF(IsNull([処理2]), [処理1], [処理2]) これであれば、レポートのコントロールのVisibleプロパティを切り替える必要はなくなる と思います。 ※私自身はレポートは殆ど使用しないのですが(汗)、少なくともフォームのコントロール の場合は、Visibleプロパティは全レコードで共通(=先頭レコードでの評価結果が 全レコードに適用される)ので・・・。 (レポートでは各レコードの値で個別判定されるのでしたらすみません(汗))
その他の回答 (4)
- piroin654
- ベストアンサー率75% (692/917)
詳細に表示するならば、処理欄という非連結のテキストボックスと コントロールソースがそれぞれ処理1、処理2のテキストボックス 処理1、処理2を同じ詳細に設定し、処理欄のコントロールソースを =IIf(IsNull([処理2]),[処理1],[処理2]) とし、処理1、処理2は重ねておいて両方「可視」を「いいえ」にすれば いいです。 念のために処理1、処理2を可視を「はい」にして 処理欄にデータが意図通りに入っているか確認 してください。
- bonaron
- ベストアンサー率64% (482/745)
レポート上のテキストボックス名を「処理」とし、 コントロールソースを =Nz([処理2],[処理1]) とすれば、VBA は必要ないですね。 to DexMachina さん > (レポートでは各レコードの値で個別判定されるのでしたらすみません(汗)) はい、レポートでは各レコードの値で個別判定です。
- nicotinism
- ベストアンサー率70% (1019/1452)
なら 処理2の背景スタイルを『普通』にして、色は・・白とか 処理1は特に設定する必要はありません。(常に表示) で、処理2を処理1の上に重ねて(気持ち大きめ)置いておきます。 (処理2を、書式→最前面へ移動) あとは詳細のフォーマットイベントで Me.処理2.Visible = Nz(Me.処理2, "") = "" では? 印刷時拡張してたりして (^^ゞ
- nicotinism
- ベストアンサー率70% (1019/1452)
レポートの詳細のフォーマット時イベントで Me.処理1.Visible = Nz(Me.処理2, "") = "" Me.処理2.Visible = Nz(Me.処理1, "") = "" で出来ませんかね? 条件付き書式でも良さそうな気もしますが 以下蛇足 ※処理1 と 処理2 のコントロールは二つ並べて置いてあるのですよね? 重ね合わせておいてあれば、両方にデータが入っていた場合は?
補足
両方に入っていた場合は、処理2のみ表示です。2つのコントロールは重ねて置いてます。処理2がある場合はうまくいくんですが、処理1のみの場合何も表示されなくなってしまいます。
お礼
ありがとうございました♪