- ベストアンサー
なぜRecalcではだめなのか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> なぜRecalcではだめなのか教えてください。 フォームにはRequeryメソッドとRecalcメソッドの双方が用意されているのに 対して、コントロールにはRequeryメソッドしかありません。 そのため、「メソッドまたはデータ メンバが見つかりません」とのエラーが発生 します。 では、なぜフォームでは双方を持たせているのにコントロールでは片方だけ なのか、ということになるかと思いますが、フォームでは2つのメソッドの実行 結果が異なるのに対して、コントロールでは(仮に双方を組み込んでも) 全く同じ動作にしかならないと推測されます。 そのため、コントロールについてはRecalcは省略(?)された、ということでは ないかと思います。 【フォームでの実行例】 ともに「テーブル1」をレコードソースとする「フォーム1」「フォーム2」を作成 します。 (ともに全レコード表示、帳票型) 双方のフォームを予め開いた状態で、フォーム1でレコードの追加や削除 を行った後、フォーム2でそれぞれRecalcとRequeryを行った場合、以下の ような差が出ます: Recalc: フォーム1で追加したレコードは、表示されません。 (演算コントロールでの「=DCount("*", "テーブル1")」は、追加を反映) Requery: フォーム1で追加したレコードも、表示対象に追加されます。 (当然、演算コントロールも反映) 従って、他のフォーム等での追加の反映の可否・要否で、フォームに対する RecalcとRequeryは使い分ける可能性があります。 一方、コントロールではこのような使い分けができる余地はまずない(*)ため、 Requeryだけでよいと判断されたものと思います。 *:コンボボックスやリストボックスの場合は、その余地があったかも、と。 VBE画面の右クリックメニューから表示できる「オブジェクト ブラウザ」で 検索を掛けると、指定した語句を含むメソッドや定数などが、どのオブジェクト (フォームやコントロール等)に対して組み込まれているかも確認できますので、 興味があったら確認してみることをお勧めします。
お礼
>フォームにはRequeryメソッドとRecalcメソッドの双方が用意されているのに 対して、コントロールにはRequeryメソッドしかありません。 そのため、「メソッドまたはデータ メンバが見つかりません」とのエラーが発生します。 これが原因なのですね!詳しい説明ありがとうございます。 オブジェクト ブラウザも確認してみます。