2024年のうちにやっておきたいこと、ここで宣言しませんか?

フォームAを閉じて、フォームBのテーブルに基づいたデータをリクエリ(更新)したいのですが

DoCmd.Close acForm, "フォームA"
DoCmd.Requery "フォームB"

実行時エラー2109 「カレントレコードには、フォームBという名前のフィールドはありません。」となってしまいます。

フィールド名ではなくフォームB全体を更新したいのですが、どうすればいいでしょうか?
フォームBは開いている状態です。

A 回答 (1件)

以下のようにすると、意図した動作になると思います:



DoCmd.Close acForm, "フォームA"
Forms!フォームB.Requery

※「Forms!フォームB.Requery」は
 「Forms("フォームB").Requery」としてもOk。
 (「""」の有無に注意してください)


フォームのリクエリに「DoCmd.Requery」を使用することも
できますが、その場合は対象フォームの指定は引数では
なく(→この引数は特定のコントロールだけをリクエリしたい
場合に、そのコントロール名を指定するためのものです)、
フォームへのSetFocusで対応することになります。
(但し、上記に比べて、メリットはありません:
 Access2007以前の機能で、VBAを直接組むのでは
 なく、マクロからの変換でVBAにした場合、このメソッドが
 使用されたりします)

DoCmd.Close acForm, "フォームA"
Forms!フォームB.SetFocus
DoCmd.Requery
    • good
    • 2
この回答へのお礼

ありがとうございます。

お礼日時:2013/06/22 12:59

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

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


おすすめ情報

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