- ベストアンサー
AccessVBA RecordSourceのリセットについて
こんにちは。 フォーム上で、データベースを検索するものを作っています。 SELECT ~ WHERE ~ で条件に合致するレコードを、サブフォームを連続表示しています。 リセットボタンを作成して、検索結果を消したい(カラにしたい)と思うのですが、 Me![subform].Form.RecordSource = "" Me![subform].Requery 上記のVBAを実行すると、1レコードだけ表示され、コントロール上では「#Name?」が出てしまっています。 参照するテーブルが無いためにこういうことが起きているのだと思うのですが、防ぐ方法が分かりません。 教えてください。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ソースを空にしておいて再クエリなど出来ません >SELECT ~ WHERE ~ で条件に合致するレコードを 表示している時 >リセットボタンを作成して、検索結果を消したい(カラにしたい)と思うのですが、 こうしたければWhere条件を何も抽出しないものに変えます
その他の回答 (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
お礼
勉強になります! ありがとうございました!
お礼
教えていただいた方法でやってみます! ありがとうございました!