• 締切済み

ActiveReportバウンドコントロールの値はどうやて参照すればいいの?

ActiveReport2.0+VB6.0 今、オラクルのテーブルから読み込んだレコードをリスト出力するプログラムを作っています。 Select 名前 from TB1; というレコードセットをsourceとし、Detailエリアに「名前」のバウンドコントロールtxtA、アンバウンドコントロールtxtBを配置します。 「名前 」には(はなこ、まさお、たろう、けいこ・・)と入っていて、それにあわせてtxtBに(女、男、男、女・・)と出力するとします。 今、FetchDataイベントで txtAの値を参照しながらtxtBの出力値を設定しようとしていますがtxtAの値が参照できません。 どのようにすれば参照できるでしょうか。 またこのようなことを実現する場合はどこのイベントで行えばよいのでしょうか?

みんなの回答

回答No.2

以下、数年前の記憶なのでご参考まで。 元々FetchDataイベントは「データソースとは無関係に(←アンバウンドな)Detailをインスタンスする」ためのブロックです。アンバウンドDetailは、FetchDataイベント内のコードで設定されたフィールド値を元にしてインスタンスされます。このためFetchDataイベント内においては、出力先のDetailがまだ決まっておらず、従って txtA の参照は叶いません(参照できたとしても、本来の出力先とは別のDetail内にある txtA)。 バウンドコントロールの値を主体にして具を出力したい場合、#1さんのカキコの通り、データバウンド後に発生するFormatイベントで記述するしかありません。個人的には、全てアンバウンドコントロールで実装した方が何かと便利だったと記憶しています。この場合はFetchDataイベントで動的データを整形してフィールドに送り込み、Formatイベントで静的コントロールや体裁の制御を行います。 余談ですが、ActiveReportsには「仕様に合わない書き方をすると実行時に時々バグる」という特有の癖がありますので、仕様や思想をよく理解した上で実装した方が良いです。 以上、お粗末でした。

すると、全ての回答が全文表示されます。
回答No.1

その時点ではコントロールに何も入っていません。(その後せっていされるらしい) コントロールの値を参照したいのならBeforePrintイベントで取得するほうがいいみたいです。 Formatでデータソースの値を参照するという方法もありますが。 そのあたり、ヘルプやサンプルいろいろあさってみるとあった記憶があります。

すると、全ての回答が全文表示されます。

関連するQ&A