• ベストアンサー

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

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

  • idek
  • お礼率47% (170/361)

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

  • ベストアンサー
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

  • Accessのレポートのコントロールソースについて

    すみません。教えてください。 Accessのレポートで、レポートとしてはクエリー1をレコードソースに設定してありますが、その中の1つのテキストボックスにクエリー2(つまりレコードソースに設定した以外のクエリー)の項目を表示させたい場合、そのテキストボックスのコントロールソースには、どのように式を記載すればよいのでしょうか?

  • サブレポートのテキストボックスのコントロールソース

    アクセス レポート サブレポートのテキストボックスのコントロールソースの設定をVBAでするタイミングを教えてください。 詳細_Formatイベントで、 Me.Controls("サブレポート").Report.Controls("月").ControlSource = "月" とすると 印刷プレビュー時または印刷を開始したあとは、コントロールソースプロパティを設定できません というエラーになります。 フォームからレポートを開いていて、フォームの値をサブレポートのテキストボックスのコントロールソースに設定したい場合、どのレポートのイベントで設定すればいいでしょうか? ご回答よろしくお願いします。

  • アクセスで レポートのコントロールソースを変更したのに?

    前任者がウィザードを使ってつくったレポートのテキストボックスのひとつの コントロールソース が 「番号」となっていたが、その元のクエリのフィールド名を「登録番号」と変更したので同じように変更したのですが レポートを開こうとすると「番号」をMSGboxが聞いてきます。心当たりはすべて「登録番号」に変更したのですが、どうしてでしょう。ウィザードで作ると自動的にコントロールソースをどこかに指定しているのでしょうか。または、インデックスとかがじゃましているのでしょうか。何か心当たりがあればお教えください。

  • レポートでの表示

    いつもお世話になっております。 発注書を作成している、アクセス初心者です。 アクセス2000で作成した発注書フォームで 発注者欄を設けているのですが 印刷すると、 発注者名ではなく発注者コードが印刷されてしまいます フォーム上では発注者名が表示されているのですが。。。 発注者名を印刷するにはどうしたらいいですか? レポートのコントロールソース  「発注書印刷」(←選択クエリ) レポートの発注者名のテキストボックスのコントロールソース:「発注者」 SELECT 発注書.発注者 発注書テーブルの  発注者=テキスト型 フォーム上の発注者の部分(コンボボックス) コントロールソース「発注者」 値集合ソース SELECT 社員マスタ.社員コード, 社員マスタ.社員名 FROM 社員マスタ ORDER BY 社員マスタ.社員コード; 社員マスタ:テーブル 社員コード(主キー)数値型 社員名 テキスト型 です この情報だけで回答が得られるかどうかも自信がありませんが 解決策をご存知の方がいらっしゃったらどうかお力をお貸しくださいませ。

  • もしフォームヘッダーにコントロールがあるのなら

    アクセスのフォームの、フォームヘッダーに検索用テキストボックスとコンボボックスがあり、 詳細エリアにレコードソース(コントロールソース)に紐付いたテキストボックスが複数あります。 フォームヘッダーのフィルタを解除するコマンドを実行して、 フォームヘッダーのテキストボックスとコンボボックスをnullにしたいのですが、 vbaで「もしフォームヘッダーなら」ってするにはどうすればいいでしょうか? フォームヘッダーのコントロール名も詳細エリアのコントロール名も 区別のないコントロール名でなのでコントロール名で条件分岐をすることは不可能です。 Private Sub フィルタを解除コマンド_Click() Dim ctl As Control For Each ctl In Me.Controls If (ctl.ControlType = acTextBox) Or (ctl.ControlType = acComboBox) Then 'ここで、もしフォームヘッダーにコントロールがあるのならってしたい Me.Controls(ctl.Name) = Null End If Next ctl Me.Form.FilterOn = False End Sub このコードに付け加えてくれませんか? Debug.Print ctl.Name でコントロール名を取得するとフォームヘッダーも詳細もどちらのコントロール名も取得されてしまいます。 On Error Resume Next 以外でお願いします。

  • レポートでイベントプロシージャでコントロールソース

    アクセス2000で レポートのイベントプロシージャーでテキストボックスの コントロールソースを変えたい 住所1,2で文字数が20文字以下なら 1と2を結合して1行で出力したいのです。 テイブル名 JLIST フィールド名 ADD1,ADD2 レポート名 YK2 テキストボックス名 TADD1,TADD2 今はテキストボックスを非連結にしています。 イベントプロシージャはフォーマット時にかいています。  

  • ACCESS2000のレポートのコントロールソース内で文字列を結合したい

    ACCESS2000です。 レポートのテキストボックスのコントロールソースに式を書いて、2つのフィールドの文字列を結合してレポート上に表示させたいです。 例えば、 コントロールソース →[宛先]→教えてgoo →[敬称]→御中 とあるデータを レポート上では 「教えてgoo御中」 と一つのテクストボックス内で続けて表示させたいのです。 確かコントロールソースに =[宛先] & [敬称] に似たような感じで書けば良いというかすかな記憶があるのですが、 何かが足りないようで、#Errorになってしまいます。 こんな説明でお分かりになりますでしょうか。。。 宜しくお願い致します。

  • フォームをレポートのレコードソースにできる?

    フォーム上に「yyyy/mm/dd」と日付を入力するテキストボックスを設けて、レポート上にそのテキストボックスの日付をソースにして表示させたいのですが、可能でしょうか? より詳しいことを申し上げると、クエリ内で「between」を使っています。 開始日と終了日のふたつの日付を表示させたいのです。 可能でしょうか? ちなみにAccessのバージョンは2000です。

  • レポートのコントロールソースについて

    環境:XP-Pro(SP2)、ACCESS2003 テーブルを元にクエリーからレポートを作成しています。コントロールソースに"得意先名"(テーブル、クエリーの名前です)をそのまま指定すると何も問題ありませんが、 =Trim([得意先名]) & " " & "様" とするとエラーとなってしまいます。 原因がわかりません。 よろしくお願いします。

  • Access2002でのレポートで

    お世話になります。 Access2002でレポートを作成しているのですがデザイン ビューの詳細セクションでテキストボックスを貼り付けて "=Left([***],Len([***])-4) " *[***]はレポートで作成したクエリの項目 をプロパティのコントロールソースに設定したのですが 実際にレポートに出力するテーブルにデータがないとき テキストボックスが貼り付けてある場所に "#エラー" と表示されます。 上記の表示を回避(空白でもいいです)できる方法を 教えてください。