• ベストアンサー

AccessVBA RecordSourceのリセットについて

こんにちは。 フォーム上で、データベースを検索するものを作っています。 SELECT ~ WHERE ~ で条件に合致するレコードを、サブフォームを連続表示しています。 リセットボタンを作成して、検索結果を消したい(カラにしたい)と思うのですが、 Me![subform].Form.RecordSource = "" Me![subform].Requery 上記のVBAを実行すると、1レコードだけ表示され、コントロール上では「#Name?」が出てしまっています。 参照するテーブルが無いためにこういうことが起きているのだと思うのですが、防ぐ方法が分かりません。 教えてください。 宜しくお願いします。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

ソースを空にしておいて再クエリなど出来ません >SELECT ~ WHERE ~ で条件に合致するレコードを 表示している時 >リセットボタンを作成して、検索結果を消したい(カラにしたい)と思うのですが、 こうしたければWhere条件を何も抽出しないものに変えます

jobvba
質問者

お礼

教えていただいた方法でやってみます! ありがとうございました!

その他の回答 (1)

noname#140971
noname#140971
回答No.1

tab1: ID_fld1 01_AAAA 02_BBBB 03_CCCC 04_DDDD ' ------------------------------ ' WHERE節で検索対象ゼロを指示 ' ------------------------------ Private Sub コマンド4_Click()     Me.RecordSource = "SELECT * FROM tab1 WHERE ID<1" End Sub ' ------------------------------ ' Filterで検索対象ゼロを指示 ' ------------------------------ Private Sub コマンド5_Click()     Me.FilterOn = False     Me.Filter = "ID<0"     Me.FilterOn = True End Sub ' ------------------------------ ' WHERE節で検索対象有りを指示 ' ------------------------------ Private Sub コマンド6_Click()     Me.RecordSource = "SELECT * FROM tab1 WHERE ID>1" End Sub レコードソースを空にしたらコントロールソースも空にしないとエラーが出るでしょう。 が、この場合は、復活のコードも必要となるのでややこしいと思います。 Private Sub コマンド7_Click()     Dim ctl As Control         For Each ctl In Me.Controls         If ctl.ControlType = acTextBox Then             ctl.ControlSource = ""         End If     Next     Me.RecordSource = "" End Sub

jobvba
質問者

お礼

勉強になります! ありがとうございました!

関連するQ&A