質問: accessのrefresh・requery・repaintの違い requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。 refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。 repaintは、vbaでキャプションなどを変更したとき使っています。 でも、よくわかっていません。 どんなときにどんなメソッドを使えばいいのでしょうか? 詳しい方、よろしくお願いいたします。
回答: 僕も良くわからないのですみませんが・・・ ヘルプの質問タブに「requery」と入力して、「"requery/再クエリ" アクション」を表示させ、「関連項目」から「repaintobject、showallrecords、requery、および refresh アクション/メソッドの比較」というのを選ぶといろいろと書いてありました。 そのまま貼り付けます。 ●"repaintobject/オブジェクトの再描画" アクション ●docmd.repaintobjectrepaint メソッド 指定したオブジェクトのコントロールを再描画します。これらを実行しても、データベースの再クエリは行われず、新しいレコードも表示しません。 (※...僕はループ処理の関係で、テキストボックスに代入したテキストが表示されないときに使っています。) ●"showallrecords/全レコードの表示" アクション ●showallrecords メソッド 再クエリを行い、最新のレコードを表示し、フィルタを解除します。"requery/再クエリ" アクションではこのような処理を行いません。 ●"requery/再クエリ" アクション ●docmd.requery メソッド オブジェクトまたはそのコントロールのソースを再クエリします。"requery/再クエリ" アクションまたは requery メソッドは、次のいずれかの処理を行います。 指定したコントロールやオブジェクトの基になるクエリの再実行。 指定したコントロールやオブジェクトの基になるテーブルのレコードに行われた追加、変更、削除内容の反映。 ●refresh メソッド 指定したフォームまたはデータシートに含まれるレコードを更新して、データへの変更を反映します。この変更には、マルチ ユーザー環境での他のユーザーによる変更も含まれます。refresh メソッドが表示するのは、カレント レコードセットに加えられた変更だけです。レコード ソースへのレコードの追加や削除は反映しません。 ●requery メソッド 新しいレコード、または最後に再クエリしたときにレコード ソースから削除されたレコードを反映し、フォームまたはコントロールの基になるデータを更新します。 アクティブ オブジェクトにないコントロールを再クエリする場合は、このメソッドを使います。"requery/再クエリ" アクションやそれに対応した docmd オブジェクトのrequery メソッドは使いません。 ※...refreshはレコードの局所的な変更を確定・反映するもので、requeryは完全なすべての変更を確定・反映するものなんでしょうか?そういう感じに読めますね...。 識者の回答を待った方がいいですね。すみません。