重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

当方Access2003利用者です。

テーブル上では、「処理1」「処理2」という異なったフィールドを作成しておりますが、レポート上では【処理】欄だけとし、
「処理2」が空白であれば「処理1」の内容を表示、
「処理2」が空白でなければ「処理2」の内容を表示といった形にしたいと考えています。

現在、
If Me.処理2.value = "" Then
  Me.処理2.Visible = False
Else Me.処理1.Visible = False
という形で記述していますが、うまくいきません。

どのように記述すればよいのでしょうか?
宜しくお願いします。

A 回答 (5件)

> テーブル上では、「処理1」「処理2」という異なったフィールドを作成しておりますが、


> レポート上では【処理】欄だけとし、

レポートの『レコードソース』を、現在のテーブルから、そのテーブルを基にしたクエリに
変更されてはいかがでしょうか。

つまり、クエリに『【処理】』フィールドという演算フィールドを作成し、レポートでのデータ
表示にはそのフィールドを使用する、ということです。
(クエリのデザインビューで、『フィールド:』欄に以下のような式を指定します)

 【処理】: IIF(IsNull([処理2]), [処理1], [処理2])

これであれば、レポートのコントロールのVisibleプロパティを切り替える必要はなくなる
と思います。

※私自身はレポートは殆ど使用しないのですが(汗)、少なくともフォームのコントロール
  の場合は、Visibleプロパティは全レコードで共通(=先頭レコードでの評価結果が
  全レコードに適用される)ので・・・。
  (レポートでは各レコードの値で個別判定されるのでしたらすみません(汗))
「Access2003 レポートの表示方法」の回答画像3
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/01/04 01:07

詳細に表示するならば、処理欄という非連結のテキストボックスと


コントロールソースがそれぞれ処理1、処理2のテキストボックス
処理1、処理2を同じ詳細に設定し、処理欄のコントロールソースを

=IIf(IsNull([処理2]),[処理1],[処理2])

とし、処理1、処理2は重ねておいて両方「可視」を「いいえ」にすれば
いいです。

念のために処理1、処理2を可視を「はい」にして
処理欄にデータが意図通りに入っているか確認
してください。
    • good
    • 0

レポート上のテキストボックス名を「処理」とし、


コントロールソースを
=Nz([処理2],[処理1])
とすれば、VBA は必要ないですね。

to DexMachina さん
> (レポートでは各レコードの値で個別判定されるのでしたらすみません(汗))
はい、レポートでは各レコードの値で個別判定です。
    • good
    • 0

なら


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

レポートの詳細のフォーマット時イベントで



Me.処理1.Visible = Nz(Me.処理2, "") = ""
Me.処理2.Visible = Nz(Me.処理1, "") = ""
で出来ませんかね?
条件付き書式でも良さそうな気もしますが

以下蛇足
※処理1 と 処理2 のコントロールは二つ並べて置いてあるのですよね?
重ね合わせておいてあれば、両方にデータが入っていた場合は?

この回答への補足

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

補足日時:2010/12/30 21:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!