2017-06-26 11 views
0

私はAccess 2016で複数のテキストボックスの検索フォームのヘルプが必要です。私のフォームには、ユーザーがサブフォームの検索結果を取得するためにデータを入力できる6つのフィールドがあります。結果を得るには、1つ以上のフィールドに検索パラメータを入力するオプションが必要です。人々が愛しているAccess 2003データベースにも同様の形があります。私はAccess 2003データベースからコードをコピーして更新しようとしましたが、2016年のデータベースでは機能しないようです。私は答えを探して何週間も過ごしてしまった。私は基準の下でLike "*" & [Forms]![WelcomePage]![WCLastName] & "*" Or ([Forms]![WelcomePage]![WCLastName] Is Null)を持つクエリでMS Access検索フォームのクエリ

Private Sub cmdWCSearch_Click() 
Dim strsql As String 

strsql = "SELECT * FROM qryWCSearch WHERE ID > 0" 

If Not IsNull(Me.WCLastName) Then 
strsql = strsql & "And [WCLastName] Like '*" & Me.WCLastName & "*'" 
End If 

If Not IsNull(Me.WCDOI) Then 
strsql = strsql & "And [WCDOI] Like '*" & Me.WCDOI & "*'" 
End If 

If Not IsNull(Me.WCWorkStatus) Then 
strsql = strsql & "And [WCWorkStatus] Like '*" & Me.WCWorkStatus & "*'" 
End If 

If Not IsNull(Me.WCClaimNumber) Then 
strsql = strsql & "And [WCClaimNumber] Like '*" & Me.WCClaimNumber & "*'" 
End If 

If Not IsNull(Me.WCBodyPart) Then 
strsql = strsql & "And [WCBodyPart] Like '*" & Me.WCBodyPart & "*'" 
End If 

If Not IsNull(Me.WCClaimStatus) Then 
strsql = strsql & "And [WCClaimStatus] Like '*" & Me.WCClaimStatus & "*'" 
End If 

End Sub 

次のコードは、私はAccess 2003のデータベースからコピーされ、現在のデータベースに更新するものです。

検索を実行すると、次のエラーメッセージが表示されます。イベントプロパティの設定として入力したクリックの式で、Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときに問題が発生しました。

これを機能させるための助けがあれば、大歓迎です!

+0

を。私は、すでに開いているフォームのFilterとFilterOnプロパティを設定したり、OpenFormとOpenReportのWHERE引数を使用する方が好きです。 – June7

+0

検索用語の前後にワイルドカードを使用することで、妥当な数のレコードがあれば、非常に遅く、非常に遅くなります。同じようなものの前にあるワイルドカードを使用すると、インデックスの使用が無効になります。 – Minty

答えて

0

あなたはすべてのあなたの「および」Sの前にスペースが必要です。私は、動的パラメータ化クエリを使用しないでください

If Not IsNull(Me.WCLastName) Then 
    strsql = strsql & " And [WCLastName] Like '*" & Me.WCLastName & "*'" 
End If 
関連する問題