お世話になります。
メインフォームに、テキストボックスを作り
=Sum([sbf_Treatment].[Forms]![Qty])
と設定しましたが#Errorとなります。
サブフォーム内に=Sum([Qty])の場合は正常に表示されますし、サブフォームコントロール名も間違ってはいません。
どこが違うのでしょうか。
角括弧は自動で作られてしまって、消せませんでした。
お世話になります。
メインフォームに、テキストボックスを作り
=Sum([sbf_Treatment].[Forms]![Qty])
と設定しましたが#Errorとなります。
サブフォーム内に=Sum([Qty])の場合は正常に表示されますし、サブフォームコントロール名も間違ってはいません。
どこが違うのでしょうか。
角括弧は自動で作られてしまって、消せませんでした。
Sum関数は、自身のフォームのレコードソースのフィールドを対象とします。別フォームのフィールドは使用できません。サブフォームでも同様です。
サブフォーム内の =Sum([Qty]) のテキストボックスを参照するようにしてください。このテキストボックス名を SumQty として、メインフォームのテキストボックスのコントロールソースを下記のように設定します。
サブフォーム内の =Sum([Qty]) を表示させたくない場合、可視を「いいえ」にしておけばいいでしょう。
ご回答ありがとうございます
このサブフォームは2つのメインフォームで使用する汎用フォームとして設定しましたが、
今回問題にしているメインフォーム(フォームA)でフィルタリングがあるため、
別のメインフォーム(フォームB)を開くときに、フォームAのテキストボックスに関する
パラメータ入力ダイアログを要求されて困っています。
そのため、合計はサブフォームではなくメインフォームで計算しようと考えました。
(できない理由は理解しました)
サブフォームの使いまわしをやめるしかないでしょうか?
サブフォームのレコードソースのクエリ、または、コントロールソースで、フォームAを参照しているということでしょうか。
もし、使いわわしたいなら、この参照はやめて別の方法を考えることになるでしょう。
下記のようないくつかの方法が考えられます。状況に応じて選択してください。
メインフォームの「リンク親フィールド」「リンク子フィールド」の設定でフィルタリングする。
親フォームのVBAでFilterプロパティを設定してフィルタリングする。
サブフォームからの参照を絶対参照ではなく相対参照にする。(メインフォームが変わっても条件が同じになる場合)
[Parent]![コントロール名] で親フォームのコントロールを相対的に参照できます。
使いまわし早めて、それぞれ別のサブフォームとして独立させることとします。
ありがとうございました