2016-11-03 3 views
1

後、私は、次のレコードソースを使用するスプリットフォームを開発しましたが見つかりませんアクセスフォームのレコードソースは、検索

SELECT * FROM [CCG Complaints];

フォームがうまく機能し、私は物事のその側に問題がありません。

ユーザーには、検索するボタンと検索するボタンがあります。

問題が検索を実行した後、私は、フォームを閉じて、その後、(フォームビューで)再びそれを再び開いたときに、発生する:

enter image description here

しかし、私は、フォームを閉じる前Show allをクリックしたときに、それをフォームビューでエラーなしで正常に開きます。

上記のエラーを受け取った後、デザインビューでフォームを開くことができ、エラーメッセージなしでフォームビューでフォームを表示できます。エラーは、フォームを開いたときにのみ発生します最初のインスタンスのフォームビュー。

なぜこれが問題なのですが、どうすれば解決できますか?

私がボタンに使用するコードはここにある:

Private Sub search_Click() 
Dim strSearch As String 
Dim strText As String 
    If Len(Me.txtSearch.Value & vbNullString) = 0 Then 
     MsgBox ("Enter a search term.") 
    Else 
     strText = Me.txtSearch.Value 
     strSearch = "SELECT* from [CCG Complaints] where [Ref no] Like ""*" & strText & "*"" or [lastName] Like ""*" & strText & "*"" Or CCG Like ""*" & strText & "*"" " 
     Me.RecordSource = strSearch 
    End If 
End Sub 

Private Sub showAll_Click() 
    Dim strSearch As String 
    strSearch = "SELECT * from [CCG Complaints]" 
    Me.RecordSource = strSearch 
End Sub 
+0

1. '[CCG Complaints]'をレコードソースとして使用しない理由はありますか? - 2.どのようにフィルタリングしますか(コードを追加してください)? - 3.フォームプロパティ 'FilterOnLoad'がTrueの場合、Falseに設定してみてください。 – Andre

+0

1.はい、私はそれを試したが、エラーは依然として続きます。 2.質問にコードが追加されました。 3.「いいえ」に設定されているので、「はい」に設定しますが、エラーはスローされます。 (私はそれを 'No'に戻しました) – MusTheDataGuy

答えて

0

私は[CCG Complaints]にレコードを設定することをお勧めし、それを変更しません。既存のレコードにフィルタを適用

Private Sub search_Click() 
Dim strSearch As String 
Dim strText As String 
    If Len(Me.txtSearch.Value & vbNullString) = 0 Then 
     MsgBox ("Enter a search term.") 
    Else 
     strText = Me.txtSearch.Value 
     strSearch = "[Ref no] Like ""*" & strText & "*"" or [lastName] Like ""*" & strText & "*"" Or CCG Like ""*" & strText & "*"" " 
     Me.Filter = strSearch 
     Me.FilterOn = True 
    End If 
End Sub 

Private Sub showAll_Click() 
    Me.Filter = "" 
    Me.FilterOn = False 
End Sub 
+0

それはそれを行いました - ありがとう!最初のケースでエラーが表示されたのはなぜですか? – MusTheDataGuy

+0

私は本当に言うことができません - 私はここでそれを再現しようとする必要があり、本当に時間がありません。 @SnookerFan – Andre

1

代わりのレコードを変更し、:

代わりに、これはフォームのフィルタを実装するための通常の方法である.Filterプロパティを使用します。

Me.filter = "[Ref no] Like ""*" & strText & "*"" or [lastName] Like ""*" & strText & "*"" Or CCG Like ""*" & strText & "*"" " 
Me.FilterOn = True 

その後

Me.Filter = "" 
Me.FilterOn = False 

があなたのレコードセットが少しでも大きくなる場合には、フィールドの多くに検索このワイルドカードは非常に非効率になることに注意してくださいリセット。より堅牢な検索方法を検討することをお勧めします。このhttp://allenbrowne.com/ser-62.htmlはより完全な解決策です。

+0

お勧めに感謝 - これは私が達成しようとしていたもののようです。 – MusTheDataGuy

+0

このウェブサイトに記載されている方法を使用して、同じフォーム内でレコードソースを変更する方法はありますか? – MusTheDataGuy

関連する問題