プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

ソースを空にしておいて再クエリなど出来ません



>SELECT ~ WHERE ~ で条件に合致するレコードを
表示している時
>リセットボタンを作成して、検索結果を消したい(カラにしたい)と思うのですが、
こうしたければWhere条件を何も抽出しないものに変えます
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/08/19 10:29

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/08/19 10:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A