• ベストアンサー

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

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

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

レポートのレコードソースに以下のSQL文を貼り付けて 確認してみてください。クエリを作る必要はありませんが、 レコードソースにテーブルを直接指定するのではなく、 レポートのプロパティのレコードソースの右端を クリックしてクエリを作成する要領で設定できます。 設定したらそのまま閉じると、変更するか、という ダイアログが示されるので「はい」とします。 SELECT IIf(Len([JLIST]![ADD1] & [JLIST]![ADD2])<=20,[JLIST]![ADD1] & [JLIST]![ADD2],[JLIST]![ADD1]) AS F1, IIf(Len([JLIST]![ADD1] & [JLIST]![ADD2])<=20,"",[JLIST]![ADD2]) AS F2 FROM JLIST;

5302abc
質問者

お礼

ありがとうございます。 試してみます。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1です。 20文字未満ならば、No1のままで、 20文字も含めるならば、F1、F2それぞれ <20 を <=20 としてください。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

レポートのレコードソースをレポートのクエリビルダから 設定して、以下のフィールドを追加し、F1、F2をそれぞれ テキストボックスのTADD1とTADD2のコントロールソースに したらどうですか。 F1: IIf(Len([JLIST]![ADD1] & [JLIST]![ADD2])<20,[JLIST]![ADD1] & [JLIST]![ADD2],[JLIST]![ADD1]) F2: IIf(Len([JLIST]![ADD1] & [JLIST]![ADD2])<20,"",[JLIST]![ADD2]) なお、JLIST、ADD1、ADD2のフィールド名は 質問のフィールド名をそのままコピーしているので、 たぶん、文字が全角になっているのではと思います。 実際にあわせて変更してください。

5302abc
質問者

補足

ありがとうございます。 クエリーを使うのですね、 試してみます。 試行錯誤しているうち テキストボックスのコントロールソースを IFなどでかえられないことがわかり、苦労しています。

関連するQ&A

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

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

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

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

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

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

  • レポートのイベントの「フォーマット時」とは?

    レポートのイベントの「フォーマット時」とはどんなイベントなのでしょうか? ヘルプには、 レポート セクションのプロパティ シートの [OnFormat/フォーマット時] プロパティ ボックスの値を指定します。 と書いてあるのですが、どういうイベントなのかわかりません。 このイベントは、レポートが開いたと同時にテキストボックスに値を入れる時に使うのですが、 Openイベントで Me.txt_テキスト = "aaa" とやるとエラーになるのに、 Formatイベントなら、問題なくできます。 Formatイベントが何が起きた時に発動するイベントなのかわからないので教えてください。

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

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

  • access2007のコントロールソースで

    初めて質問します。よろしくお願いします。 OS:Windows7 Home Premium Edition Access:2007 ある業者がAccess2003で構築したシステムを2007で動くようにユーザーから依頼され 動作確認をしているのですが、 <レポートのレポートフッター-イベントプロシージャで> Option Compare Database Option Explicit Public gDSum As Currency <レポートフッター-フォーマット時イベントで> gDSum = IIf(IsNull([明細金額]), 0, [明細金額]) <レポートフッター-テキストのコントロールソースで> =[gDSum] レポートを実行すると、レポートフッター-テキストが 「#Name?」になります。 Access2003とAccess2007で記述が変更になっているのでしょうか?

  • Accessでのイベントプロシージャ

    他の人が作成、使っているファイルで相談されたのですがわからないので教えてください。 今まで自分の意図するとおりの動いていたレポートがあります。 レポートのオープン時にイベントプロシージャを使ってコードをかいていました。 ですが動作がおかしかったので、イベントプロシージャを見ようと、デザインビューで 「開く時」のイベントプロシージャの横の「…」ボタンを押しても何も起こりません。 私もやってみたのですが何もおきません。 試しにと思い、「閉じる時」に新規にイベントプロシージャを作ってみようと、 横の▼ボタンを押してイベントプロシージャを選択し、「…」ボタンを押しても反応しません。 またMicrosoft Visual Basicを開き、左側のウィンドウを見たところ、上記の動作がおかしい レポート名が表示されていませんでした。 これはもうコードが消えてしまっているということでしょうか?

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

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

  • アクセスvba [イベント プロシージャ]つけたい

    もうフォームモジュールにイベントは出来上がってるのですが コントロールの名前を変更したため デザインビューのプロパティの[イベント プロシージャ]と言う文字が消えてしまいました。 フォーム上の全てのコマンドボタンのクリック時に [イベント プロシージャ]と言う文字を入れたいのですが そのような作業は可能でしょうか? [イベント プロシージャ]と言う文字が入れば、該当のイベントは既にモジュールにある為 イベントとして機能します。

  • Access のレポート上のコントロールに、VBAで値を設定できる?

    こんにちわ Access のレポート上にテキストボックスが有ります。 レポート印刷時の Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) End Sub プロシージャー内で、上記テキストボックスに任意の文字列を設定する事は可能でしょうか? 以前 Access VBAでアプリケーション開発していた時には、出来たような気がするのですが.... これって出来ないのでしたっけ?

専門家に質問してみよう