質問: アクセス フォームをリクエリしたい フォームaを閉じて、フォームbのテーブルに基づいたデータをリクエリ(更新)したいのですが docmd.close acform, "フォームa" docmd.requery "フォームb" 実行時エラー2109 「カレントレコードには、フォームbという名前のフィールドはありません。」となってしまいます。 フィールド名ではなくフォームb全体を更新したいのですが、どうすればいいでしょうか? フォームbは開いている状態です。
回答: 以下のようにすると、意図した動作になると思います: 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