- ベストアンサー
非連結サブフォームのレコードソース
非連結のサブフォームに親フォームで設定された条件で レコードソースを更新しているのですが、 「2467指定した式で閉じているかまたは存在しないオブジェクトを参照しています」とエラーが出ます。 色々調べた結果フィルタで対処する方法しか見つかりませんでした。 参考URL:http://www.accessclub.jp/bbs3/0132/superbeg45961.html フィルタを使用するために、既定でレコードソースを設定してしまうと レコードソースとなっているリンクテーブルが非常に重いため、開くまで非常に時間がかかってしまいます。 フィルタを使わずに回避する方法はないでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1です 2と3で手法が違いますがその辺りの解説は?
その他の回答 (3)
- nda23
- ベストアンサー率54% (777/1415)
条件を適当に設定したSQL自体のクエリは正しく動くのでしょうか?
- nda23
- ベストアンサー率54% (777/1415)
レコードソースを動的に更新することは良く使う手です。 フィルタとかオブジェクトは使わず、SQL(文字列)を書き込む方法で 実現できるはずです。 Dim SQL As String SQL = "SELECT ~ WHERE A=" & 画面項目 '画面による条件指定 Me.SubForm.Form.RecordSource = SQL Me.SubForm.Form.Requery 'やらなくても良いと思うが、念のため Recordsetは再クエリした結果、生成されるオブジェクトなので、 ここへ何かを代入するのは話が逆(つまり、間違い)です。
補足
nda23様 Private Sub メインフォームボタン_Click() Me!サブフォーム.Form.RecordSource = SELECT * FROM TBL_SUB" & _ " WHERE ID = '"& Parent!iD &"'" End Sub としているのでnda23様と同じ形で実行しています(変数を通すか通さないかはありますが) この形で現状上記エラーが出てしまいます。
- backyardbf
- ベストアンサー率50% (2/4)
非連結・・・ではないですよね? レコードソースを更新・・・具体的にどのように?
補足
nda23様 クエリ自体は全く問題ありません。 現在はサブフォームのレコードソースにクエリ名を指定し メインフォームでボタンクリック時に QueryDefを利用しクエリーを生成してから メインフォーム内のサブフォームのソースオブジェクトにサブフォーム名を設定してます。