Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(その他 : Access 2010)
サブフォームのレコード数
投稿日時: 21/08/30 14:01:09
投稿者: 滝沢

フォームA:処理ボタン
フォームB:結果のメインフォーム
タブB:フォームB内にあるタブコントロール
フォームC:タブB内にあるフォーム
 
フォームAで処理ボタンを押した結果、フォームCのレコード数をフォームB上に表示したい。
 
Dim rs As Recordset
Set rs = Forms.[フォームC].Form.RecordsetClone
[フォームB].txt_レコード数.Value = rs.RecordCount
 
結果「オブジェクトはこのプロパティまたはメソッドをサポートしていません」となってしまいます。
 
どのようにすればよいでしょうか。
よろしくお願い致します。

回答
投稿日時: 21/08/30 14:28:46
投稿者: Suzu

フォーム C は、フォームB内のサブフォームですよね。
 
その場合は、親フォームである フォームB から参照しなければなりません。
 
フォームA から参照するのであれば
 
Forms![フォームB]![サブフォームコントロール名].Form.〜〜
 
  ( Set rs =Forms![フォームB]![サブフォームコントロール名].Form.Recordset)
の様にします。
 
 
レコード数を取得したい場合に、
フォームの設定次第では、最終レコードに移動しないと
 レコードセットの RecordCount プロパティーに 正しい値が入らない場合があります。
 
その場合には
・レコードセットを最終レコードに移動してから RecordCount を取得する
・サブフォーム内に レコード数を取得する テキストボックスを配置しその値を参照する
・初めから、レコードセットを参照せずに、
   DCount関数の WhereCondition に 親子設定 となる 抽出条件を指定し 取得させてる
 
辺りが常套手段でしょうか。

回答
投稿日時: 21/08/30 14:31:04
投稿者: Suzu

引用:
Forms![フォームB]![サブフォームコントロール名].Form.〜〜

 
ここの、サブフォームコントロール名 ですが、あくまでもコントロール名であり
サブフォームのソースオブジェクトである、フォームC を指定するのであはありません。

投稿日時: 21/08/30 21:51:35
投稿者: 滝沢

Suzu様
コメントありがとうございます。
 
> ( Set rs =Forms![フォームB]![サブフォームコントロール名].Form.Recordset)
これでバッチリうまくいきました。
ありがとうございます。