• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access 2003でサブフォームが更新されません。)

Access 2003でサブフォームが更新されない問題について

このQ&Aのポイント
  • Access 2003でリストボックスの値を変更しても、サブフォームが更新されない問題について質問です。
  • サブフォームのレコードソースはクエリから引用しており、コードを実行しても更新されません。
  • 解決策が分からず困っているので、詳しい方に教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

確認したところ、クエリのSQL文の更新は、その前に開かれていた フォームに対しては反映されないようです。 (レコードソースにクエリが指定されている場合、クエリそのものを  使用しているというより、そこに記述されたSQL文が使用されて  いる、ということかもしれません) 解決策としては、レコードソース(RecordSource)の再設定、という ことになるかと思います。 とりあえず、運用上「計画クエリ」のSQL文が、現在のサブフォームのSQL分と 整合性を求めるかどうかで、2通りの対処が考えられます。 【解決策1:「計画クエリ」のSQL文を連動させる必要がある場合】 計画クエリのSQL文を差し替えた後に、レコードソースに同クエリを 再設定します。 Dim db As DAO.Database, qry As DAO.QueryDef Set db = CurrentDb Set qry = db.QueryDefs("計画クエリ") qry.SQL = newSQL 'ここではレコードセットを開く必要はないので、そのまま閉じます qry.Close 'CurrentDbの場合、Closeは不要(無効)かと思います(多分(汗)) Set db = Nothing Me!計画クエリのサブフォーム.Form.RecordSource = "計画クエリ" 【解決策2:「計画クエリ」のSQL文を連動させなくてもよい場合】 フォーム・サブフォームのレコードソースには、テーブルやクエリだけでなく、 SQL文も指定可能なので、計画クエリのSQL文は変更せずに、 レコードソースを直接編集します。 こちらの場合、切替に要するコードは1行だけです。 Me!計画クエリのサブフォーム.Form.RecordSource = newSQL ・・・以上です。

whatsnew
質問者

お礼

ご回答ありがとうございます。 サブフォームのRecordSourceを再設定してあげればよかったのですね。 RecordSourceでSQLを指定するだけで更新するとは知りませんでした。 こちらの思うとおりに動作しました。 ありがとうございました。

その他の回答 (1)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

提示されたコードはよくわからないので、 以下の部分について、 >Me!計画クエリのサブフォーム.Form.Requery 一般的には Forms!メインフォーム名!サブフォームを表示するメインフォームのコントロール名.Form.Requery あるいは、 Forms!メインフォーム名!サブフォームを表示するメインフォームのコントロール名.Requery という参照のしかたをしますが、Meを使って、 Me!埋め込みの名前.Form.Requery あるいは、 Me!埋め込みの名前.Requery としても参照できます。したがって、 サブフォームを表示するメインフォームのコントロール名 = 計画クエリのサブフォーム に設定していればいいのですが、 何もしなければ、埋め込み0というような 名前を使うようになります。 つまり、Me!の後に来るのはサブフォーム の名前ではない、ということです。 メインフォームの埋め込みのプロパティ から名前を確認するか、設定を変えるか してみてください。 話がずれていたらスルーしてください。