こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

レポートのコントロールソースを条件により変えたい

環境:ACCESS2003&XP
フォームにボタンをつけ、クリックするとレポートがプレビューされるようにしてあります。レポートのレコードソースはクエリーです。
そのクエリーには、"担当者名"と”マスター担当者”というフィールドがあります。
フォームのオプショングループのオプションボタンを見て、レポートのテキストボックス(txt担当者名)のコントロールソースを変えようとしています。レポート上では、テキストボックス(txt担当者名)のコントロールソースはブランクにしてあり、レポートの詳細(txt担当者名はレポートの詳細にはいっています)フォーマット時に以下のVBAを記述しています。
If Forms![売上一覧表_検索].[opt条件担当者] = "1" Then
Me.txt担当者名 = [担当者名]
Else
Me.txt担当者名 = [マスター担当者]
End If
データ上、担当者名は入っているのですが、レポートでは何も表示されません。
ご存知の方、よろしくお願いします。

投稿日時 - 2006-09-12 19:53:19

QNo.2402049

すぐに回答ほしいです

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

質問自体の答えは既に出ていますので別の角度から・・・。

1、レポートヘッダーに非表示で[担当者区分]を配置。

=[Forms]![フォーム1]![担当者区分]

2、txt担当者のコントロールソースを設定。

=IIf([担当者区分]=1,[担当者名],[マスター担当者])

[担当者名],[マスター担当者]を非表示で[詳細]に配置するのはNo1さんの指摘の通り。

<補足>

Private Sub コマンド0_Click()
On Error Resume Next
  DoCmd.OpenReport "test", acPreview, , , , Me.担当者区分
End Sub

と、OpenArgs を利用するとレポートでフォームを参照する手間を省けます。

・txt担当者のコントロールソースは次のように書けます。

=IIf(OpenArgs="1",[担当者名],[マスター担当者])

VBAで

Me.txt担当者名=IIf(OpenArgs="1",[担当者名],[マスター担当者])

で記述しても同じ結果です。

投稿日時 - 2006-09-13 08:45:18

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

レポートのVBAではレコードソースではなくて
レポートに配置されてるものしか参照出来ません。

VBAでやるなら、非表示のテキストボックス
[担当者名]、[マスター担当者]を詳細セクションに配置しておきます。

あるいは、txt担当者名のコントロールソースを
=IIf([Forms]![売上一覧表_検索].[opt条件担当者]="1",[担当者名],[マスター担当者])
とするかですね。

投稿日時 - 2006-09-13 06:07:46

あなたにオススメの質問