dポイントプレゼントキャンペーン実施中!

テキストボックスの現在の時刻を再計算をしようとして
何度もRecalcしていましたがエラーになり
(メソッドまたはデータ メンバが見つかりません。 (Error 461))
結局Requeryでうまく行きました。

Private Sub コマンド0_Click()
Me.テキスト1.Recalc
End Sub

のコードです。
しかし
Requeryでうまく行きました。なぜRecalcではだめなのか教えてください。

「なぜRecalcではだめなのか?」の質問画像

A 回答 (1件)

> なぜRecalcではだめなのか教えてください。



フォームにはRequeryメソッドとRecalcメソッドの双方が用意されているのに
対して、コントロールにはRequeryメソッドしかありません。
そのため、「メソッドまたはデータ メンバが見つかりません」とのエラーが発生
します。

では、なぜフォームでは双方を持たせているのにコントロールでは片方だけ
なのか、ということになるかと思いますが、フォームでは2つのメソッドの実行
結果が異なるのに対して、コントロールでは(仮に双方を組み込んでも)
全く同じ動作にしかならないと推測されます。
そのため、コントロールについてはRecalcは省略(?)された、ということでは
ないかと思います。

【フォームでの実行例】
ともに「テーブル1」をレコードソースとする「フォーム1」「フォーム2」を作成
します。
(ともに全レコード表示、帳票型)

双方のフォームを予め開いた状態で、フォーム1でレコードの追加や削除
を行った後、フォーム2でそれぞれRecalcとRequeryを行った場合、以下の
ような差が出ます:

Recalc:
 フォーム1で追加したレコードは、表示されません。
 (演算コントロールでの「=DCount("*", "テーブル1")」は、追加を反映)

Requery:
 フォーム1で追加したレコードも、表示対象に追加されます。
 (当然、演算コントロールも反映)

従って、他のフォーム等での追加の反映の可否・要否で、フォームに対する
RecalcとRequeryは使い分ける可能性があります。
一方、コントロールではこのような使い分けができる余地はまずない(*)ため、
Requeryだけでよいと判断されたものと思います。

*:コンボボックスやリストボックスの場合は、その余地があったかも、と。


VBE画面の右クリックメニューから表示できる「オブジェクト ブラウザ」で
検索を掛けると、指定した語句を含むメソッドや定数などが、どのオブジェクト
(フォームやコントロール等)に対して組み込まれているかも確認できますので、
興味があったら確認してみることをお勧めします。
    • good
    • 0
この回答へのお礼

>フォームにはRequeryメソッドとRecalcメソッドの双方が用意されているのに
対して、コントロールにはRequeryメソッドしかありません。
そのため、「メソッドまたはデータ メンバが見つかりません」とのエラーが発生します。

これが原因なのですね!詳しい説明ありがとうございます。
オブジェクト ブラウザも確認してみます。

お礼日時:2009/12/20 20:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A