• ベストアンサー

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

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

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

  • ベストアンサー
noname#22222
noname#22222
回答No.2

質問自体の答えは既に出ていますので別の角度から・・・。 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",[担当者名],[マスター担当者]) で記述しても同じ結果です。

その他の回答 (1)

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

レポートのVBAではレコードソースではなくて レポートに配置されてるものしか参照出来ません。 VBAでやるなら、非表示のテキストボックス [担当者名]、[マスター担当者]を詳細セクションに配置しておきます。 あるいは、txt担当者名のコントロールソースを =IIf([Forms]![売上一覧表_検索].[opt条件担当者]="1",[担当者名],[マスター担当者]) とするかですね。

関連するQ&A