• 締切済み

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

  • 簡単電卓をjavaプログラムで作成しました。

    テキストフィールドに入力し、四則演算ボタンを押すと答えた表示されるように作ったのですが、答えが表示されません。どなたかご教授ください。お願いいたします。 import java.applet.Applet; import java.awt.*; // java.awtパッケージのインポート import java.awt.event.*; public class EasyCulc extends Applet { Button plus, minus, multi, div; // ボタン TextField txta, txtb, ans; // 数値入力用テキストボックス public void init() { plus = new Button("+");// ボタンのインスタンスを作成 plus.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // txtaに入力された値 + txtbに入力された値を計算 int answer = Integer.parseInt(txta.getText()) + Integer.parseInt(txtb.getText());ans.setText(Integer.toString(answer));// 答えをansに表示 } }); minus = new Button("-");// ボタンのインスタンスを作成 minus.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // txtaに入力された値 - txtbに入力された値を計算 int intAnswer = Integer.parseInt(txta.getText()) - Integer.parseInt(txtb.getText()); ans.setText(Integer.toString(intAnswer));// 答えをansに表示 } }); multi = new Button("x");// ボタンのインスタンスを作成 multi.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // txtaに入力された値 x txtbに入力された値を計算 int intAnswer = Integer.parseInt(txta.getText()) * Integer.parseInt(txtb.getText()); ans.setText(Integer.toString(intAnswer));// 答えをansに表示 } }); div = new Button("÷");// ボタンのインスタンスを作成 div.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // txtaに入力された値 ÷ txtbに入力された値を計算 int intAnswer = Integer.parseInt(txta.getText()) / Integer.parseInt(txtb.getText()); ans.setText(Integer.toString(intAnswer));// 答えをansに表示 } }); // コンポーネントの初期化 txta = new TextField("", 5); txtb = new TextField("",5 ); plus = new Button("+"); minus = new Button("-"); multi = new Button("x"); div = new Button("÷"); ans = new TextField("", 5); // コンポーネントを追加 this.add(txta); this.add(txtb); this.add(plus); this.add(minus); this.add(multi); this.add(div); add(new Label("計算結果")); this.add(ans); } }

  • ACCESS メインFからサブFの値を参照

    サブフォームで集計した値をメインフォームで演算値として使用したいのですができません。 サブフォームのフォームヘッダに集計値を入れるテキストボックスを配置し、メインフォームにサブフォームの集計値を参照するテキストボックスを配置しています。 ほんとうはイベントの実行で直接サブフォームの集計値を使った演算を行いたいのですが出来ないのでメインフォームにテキストボックスを作成しました。 サブフォームの集計値は表示しますが、その値を演算値として使用できないのです。試しにMsgboxでメインフォームのテキストボックスの値を表示させると何も表示しません。 なぜメインフォームのテキストボックスにサブフォームの値は表示できるのにその値を使用できないのでしょうか? 具体的には次の通りです。 <サブフォームに配置したテキストボックス>  名前        :テキスト16  コントロールソース:SUM([枚数〕)  書式        :数値 <メインフォームに配置したテキストボックス>  名前        :テキスト130  コントロールソース:[Foms]![メインフォーム名]![サブフォーム名].Form!テキスト16  書式        :数値 <イベント>   MSGBOX テキスト130       ※何も表示されません!

  • 複数のチェックボックスの値を書き込む方法

    複数行のチェックボックスの値をそのまま 書き込みたいのですが・・・ .datファイル↓ 1234,1 5678,0  3456,1 7890,0 上記をHTMLとして出力。 1→checkedで出力されるとします。 チェックを入れて、 7890,0 ↓ 7890,1 にするとそれを1行として保存されるようにしたい です。 チェックボックスは同じ名前のためform('check') などで値を取り出したとしても最後の値しか 値を取り出せないでしょう。 画面に複数出た行を全部.datファイルに書き込むには どうすればよいのでしょうか? http://www.futomi.com/lecture/form/cgi-pm.html ↑を参照しましたが、チェックの値は@配列で 取れるような気がしましたが、1行を書き込む 方法がわからないので詳しく教えていただければ 幸いです。 言葉だけよりソースがあるとわかりやすいですm(__)m

    • ベストアンサー
    • Perl
  • CSVから値の割り出し3

    Perl初心者です。 締め切った要件にて、またお聞きするのは回答者様達に 大変失礼だと思ったのですが、どうしても解らなかった為 また教えてください。 「CSVからの値の割り出し2」にて、コードまで送って頂いた のですが、私の動作確認不足のために教えていただいた方に 不快な思いをさせるのは、大変心苦しい限りです。 申し訳ありません。。。 コードの概要は、渡されたパラメータを元にCSVファイルの カラムを絞っていって、評価した値を最後のレコードにて 割出す…というスクリプトです。 ※お手数ですが「CSVからの値の割り出し2」を参照して下さい。 CSVファイルの一番右の縦列をパラメータに指定すると何故だか 値が割出せません。ほかは問題ないのですが。 $data[x]->[y]で確認すると、値は存在するのにマッチして くれません。 これは、どうすれば解消できますか?教えてください。 それと、Open関数にて「die」が選択されたときにlogに出力 するというのをサブルーチンで、共通関数みたいな形にした いのですがどうすればいいのでしょう? よろしくお願い致します。

    • ベストアンサー
    • Perl
  • Access VBA コントロールの参照が上手く行かない

    お世話になります。 F得意先登録の中にSF得意先課があります。 1つの得意先CDごとに複数の課CDがあります。 両方に自作のレコード移動ボタンを作りましたがサブフォームのコントロールが思うように動作しません。 SF得意先課に txt得意先課件数(アクティブレコード件数/総件数) cmb課CD(得意先CDに該当する課CDのみ表示) cmb課CDの値集合ソースには SELECT T得意先課.得意先課CD, T得意先課.得意先課名 FROM T得意先課 WHERE (((T得意先課.L得意先CD)=Forms!F得意先登録!得意先CD)); と設定してあります。 という名前のコントロールがあります。 F得意先登録を表示した時に、得意先ごとの件数を正しく表示させたくて、親フォーム(F得意先登録)のレコード移動時イベントに ------------------------------------- Private Sub Form_Current() Me!txt得意先件数 = Me.CurrentRecord & "/" & Me.Recordset.RecordCount Forms![F得意先登録]![SF得意先課]![txt得意先課件数] = Forms![F得意先登録]![SF得意先課].CurrentRecord & "/" & Forms![F得意先登録]![SF得意先課]![txt得意先課件数].Recordset.RecordCount Forms![F得意先登録]![SF得意先課]![cmb課CD].Requery End Sub --------------------- と記述しましたがF得意先登録起動時に、 件数表示のほうは、「実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません」 コンボの方は、「実行時エラー2455 指定した式にForm/Reportプロパティに対する正しくない参照が含まれます」 となってしまいます。 上手く行く方法をご教授下さい。よろしくお願いします。

  • リストから値を取る方法

    Javaの勉強をしています。 顧客番号   名前   都道府県   性別 1       田中   鹿児島    女 2       山本   熊本     男 3       佐藤   岐阜     男 4       西本   富山     女 という内容がArrayListに入っているとして、顧客番号に一致する性別を取り出すことは可能でしょうか? リストの値はDBからとっています。 リストの何番目かの値を取るような方法は見たのですが上記のような顧客番号に合致するようなものをとってくることはできるんでしょうか?

  • エクセルで条件をつけて数を数える(ちょっと複雑)

    エクセルで条件をつけて数を数えたいのですが、ちょっと複雑です。     名前    性別     年齢        たろう    男      5     はなこ    女      4     じろう    男       3     ともこ    女       4     ようこ    女       2     たかし    男       3     はるみ   女        5 抽出したい条件:性別は男で、5歳でもなければ3歳でもない(年齢はこの例のみならずいかなる年齢でも5歳と3歳は省きたい) です。 性別は男で5歳の人数に関しては、SUMPRODUCT関数で解決できたのですが、この問題がわからず色々サーチしたのですが、たぶんどこかで同じ質問が出ているとは思うのですが、どーーしても探せなかったので、どうぞよろしくお願いいたします。   

  • フォームを開くボタンを1個でコントロールしたい

    「やりたいこと、ご指導頂きたいこと」 1,現在の運用方法(下記)ではコマンドボタンが4個と多く、使いづらいのでコマンドボタンを1個で完結できる方法が知りたいです。 2,個人的なお願いですが「マクロ」で対応できる方法があれば、そちらでお願いしたいと思います。理由は、VBAのスキルが低レベルで話にならない為。但し、不可の場合は、可能な方法でご指導願います。 「現在の運用方法の紹介」 企業の連絡情報帳をアクセスで運用しています。尚、フィールドの数は10ありますが、質問内容には検索項目の4個を紹介させて貰っています。 運用の概要ですが、検索専用フォームにコンボボックスを4個つくり、コンボボックスで企業リストテーブルを参照させて希望のフィールド(会社名、製品名、商品名、得意技)を選択させています。選択後はコンボボックスの横に配したコマンドボタン4個を使って個別フォームを開いている。運用の背景ですが、絞込検索では都合が悪い事情がある為です。 「各オブジェクトの紹介」 1,テーブル名:企業リスト 2,フォーム名:検索専用フォーム(レコードソースなし) 3,コンボボックスの名前:会社名、製品名、商品名、得意技 ・企業リストの各該当フィールドを値集合ソースにて参照 4,企業リストクエリ ・会社名(検索専用フォームのコンボボックス「会社名」を抽出条件に) ・製品名(検索専用フォームのコンボボックス「製品名」を抽出条件に) ・商品名(検索専用フォームのコンボボックス「商品名」を抽出条件に) ・得意技(検索専用フォームのコンボボックス「得意技」を抽出条件に) 5,フォーム名 ・会社名検索結果(レコードソースに会社名クエリ参照) ・製品名検索結果(レコードソースに製品名クエリ参照) ・商品名検索結果(レコードソースに商品名クエリ参照) ・得意技検索結果(レコードソースに得意技クエリ参照) 以上ですが、他に細かな設定(ファイル操作・選択文字の選択後の消去・等々)もありますが割愛して居ります。どうか宜しくお願いします。

  • ふたつのテーブルを参照してデータを抜き出す方法

    ふたつのテーブルを参照してデータを抜き出す方法を教えてください。ふたつのテーブルの構造は同じではありません。MySQL 4.0.2x です。 テーブル entry [ title | id | other ] sofile [ fileinfo | other | url | other ] テーブルentryからtitleおよびidフィールドのセットを全レコードからランダムに5個抽出し、 idと同じ数値をfileinfoフィールドに持つレコードのurlフィールドの値をテーブルsofileから抽出し、 titleとurlを出力、ということをさせたいです。 1個のテーブルからランダムに取り出すことはできたのですが、そのランダムの結果を受けて二つ目のテーブルからデータを取り出す方法がわかりません。ご教授いただければ幸いです。 PHPコード $ck = "SELECT * FROM entry WHERE status=2 ORDER by rand() LIMIT 5 $entry = mysql_query($ck); while ($rows = mysql_fetch_array($entry)) { echo "{$rows["title"]}\n"; echo "{$rows["id"]}\n"; }

    • ベストアンサー
    • MySQL
  • ACCESSで画像を参照する設定がうまくゆきません

    あまり詳しくはないですが、ACCESSを使って仕事をしています。 ひとつのデータにひとつの画像をつけたデータを扱うのですが、画像を直接テーブルに貼り付けているので非常に容量を食ってしまいます。(JPG形式です) そこでネットで色々調べて、現在データを保管しているテーブルに、パス用のテキストボックスを追加し、既存のフォームにイメージを配置して表示させる方法を試していますが、うまくゆかず、「プロシージャの呼び出しまたは引数が不正です」というエラーが出てしまいます。 プロシージャというもの自体をはじめて知ったので、ネットで引っ張ってきたコードをそのまま貼り付けて使っている状態です(テキストボックスの名前やイメージの名前は変えています) 現状は以下の通りです。 ファイル形式:ACCESS2000 使用ソフト :ACCESS2003 テキストボックス名:パス イメージ名     :参照 フォームの「レコード移動時」の「イベントプロシージャ」に貼り付けたコード Option Compare Database Private Sub パス_BeforeUpdate(Cancel As Integer) End Sub Private Sub Form_Current() '指定された画像に入れ替える処理 '2006/04/15 pPoy On Error GoTo Err_Form_Current Dim myPath As String myPath = CurrentProject.Path If Not IsNull(Me!パス) Then Me!参照.Picture = myPath & "\" & Me!パス Else '新規レコードに移動した際はデザイン時の画像を表示 Me!参照.Picture = myPath & "花.JPG" End If Exit_Form_Current: Exit Sub Err_Form_Current: MsgBox Err.Description Resume Exit_Form_Current End Sub ちなみに、この「イベントプロシージャ」も突然消えてしまったりします。 非常に困っていますので、よろしくお願いいたしますm()m

専門家に質問してみよう