• ベストアンサー

アクセス2003のサブフォームの値の代入

アクセス2003でメインフォームにデータシートビューのサブフォームを作成しています。 そのサブフォームのフィールドにイベントで検索用の別のフォームを開くようにしています。 検索用フォームからサブフォームへマクロで値を代入するように しているのですが、サブフォームが見つからないというエラーが表示されます。 どこに問題があるのでしょうか? (ちなみにサブフォームだけ開いて検索フォームを開き値を代入するとうまく行きます。メインフォームからだとエラーになります。) どうぞよろしくお願いします。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

単独で動いていたフォームをサブフォームとして組み込んだ時によく起きるものです。 メインのフォーム名を「M1」 メインフォームに配置したサブフォームコントロール名を「FSUB」 サブフォームにしたフォーム名を「S1」 と仮定します。 メインフォームに配置したサブフォームコントロール「FSUB」のプロパティ 「ソースオブジェクト」は、「S1」になっているとします。 また、サブフォームに配置したテキストボックス名を「S1txt」と仮定します。 テキストボックス「S1txt」へ値を代入する時には、 1)サブフォームにした「S1」を単独で起動している時、 アクション: 値の代入 アイテム: [Forms]![S1]![S1txt] 式: 2000 で代入できます。 2)メインフォームを起動している時には、 アクション: 値の代入 アイテム: [Forms]![M1]![FSUB]![S1txt] 式: 2000 で代入できます。 つまり、サブフォーム化した際には、メインフォームから辿った記述にする必要があります。 サブフォームの組み込み方によっては、メインに配置したサブフォームコントロール名が サブフォーム名と一致する場合があります。 (この時にはサブフォームコントロール名「S1」ソースオブジェクト「S1」) この状態であれば、 アクション: 値の代入 アイテム: [Forms]![M1]![S1]![S1txt] 式: 2000 で値を代入することができます。 つまり [Forms]![メインフォーム名]![サブフォームコントロール名]![サブフォームのテキストボックス名] の参照になります。 正確には、最後の[サブフォームのテキストボックス名]は、 サブフォームコントロールに設定したソースオブジェクト内のテキスト名 になります。

gozeera
質問者

補足

回答ありがとうございます。 やってみたのですが今度は 「オブジェクトを参照するときエラーが発生しました。 実行しようとしたvbモジュールでオブジェクトのプロパティまたはメソッドの参照 が正しくありません。」と表示されます。 あとどこが違うのでしょうか? 初歩的なことかも知れませんがよろしくお願いします。

その他の回答 (2)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3

#2です > 「オブジェクトを参照するときエラーが発生しました。 > 実行しようとしたvbモジュールでオブジェクトのプロパティまたはメソッドの参照 > が正しくありません。」と表示されます。 では、私には何も分かりません。(直接操作できていないので) 以下の手順で確認してください。 ・メインフォームをデザインビューで開き、プロパティを表示させます。 ・メインフォーム名を控えます。 ※A (プロパティにはありません。データベースウィンドウに表示されている名前です) ・サブフォーム部分を1回クリックします。 ・サブフォームコントロール名を控えます。 ※B ・サブフォーム内の値を代入したいテキストボックスをクリックし、名前を控えます。 ※C この時、 [Forms]![※A]![※B]![※C] でアクセスできます。 マクロ内の記述が、上記であるか確認します。 まだ、エラーが出るようであれば、 ※A、※B、※Bの時のソースオブジェクト名、※C と マクロの記述内容を提示してください。 また、単独起動でうまくいっている時のマクロの記述内容も合わせ提示ください。

gozeera
質問者

お礼

ありがとうございます。 うまくいきました。 コントロール名が間違っていました。 アドバイス本当に助かりました。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

もう少し具体的に書かないと良くわからない気がするのですが… サブフォームの指定が間違っているだけではないのでしょうか。

gozeera
質問者

補足

すいません。説明不足で。 メインフォームA(顧客登録 単票形式) サブフォームB(顧客取引履歴) サブフォームBのレコードを入力する際にフィールドにイベントで検索用のフォームCを開くマクロを設定しています。 フォームCの値をサブフォームBのレコードに代入するマクロをイベントに設定して いるのですが、サブフォームBが見つからないというエラーになります。 どこの指定をみれば良いでしょうか?