2017-08-22 2 views
1

私はアクセスとvbaで新しいです。今私は最初のプロジェクトに問題があります。私はキーワード検索を使ってテーブルとフォームを作成しました。私のキーワードの検索はうまくいきますが、標準のフィルタを一緒に使用すると、他のすべてのフィルタ値が使用できないため、1つの列のフィルタしか使用できません。私は出力を見るためにmsgboxを作っており、アクセスはテーブル名の前にアンダースコアを入れています。自分のキーワード検索でアクセスフィルターを使用

Public Sub btnSearch_Click() 
Dim sql As String 

sqlQuery = " brands.name LIKE '*" & Me.txtKeywords & "*' " _ 
     & " OR brands.ID LIKE '*" & Me.txtKeywords & "*' " 

sql = "SELECT brands.* " _ 
    & " FROM brands " _ 
    & " WHERE " & sqlQuery 

Me.sfrmBrands.Form.RecordSource = sql 
Me.sfrmBrands.Form.Requery 

End Sub 

と出力

MsgBox (Me.sfrmBrands.Form.Filter) 

出力:([_brands].[name]="Test")

しかし、私は必要([brands].[name]="Test")

+0

のための他の解決策はあり@Gustavは正しいです。シンプルな誤植のために、この質問にはオフトピックとしてフラグを立てる。 –

答えて

1

読み込みする必要があります。

sqlQuery = " brands.name LIKE '*" & Me.txtKeywords & "*' " & _ 
      " OR brands.ID LIKE '*" & Me.txtKeywords & "*' " 
また

、すべてのあなたにサブフォームのRecordSourceを設定してフィルタ設定をそのままにしておくと、メッセージボックスにこのフィルタが表示されます。フィルタを設定するには

Dim sql As String 
Dim Filter As String 

sql = "SELECT * FROM brands" 
Filter = "[name] LIKE '*" & Me.txtKeywords & "*' " & _ 
     "OR [ID] LIKE '*" & Me.txtKeywords & "*'" 

Me.sfrmBrands.Form.RecordSource = sql 
Me.sfrmBrands.Form.Filter = Filter 
Me.sfrmBrands.Form.FilterOn = True 

編集:フィルタの前にフィルタ:

Me.sfrmBrands.Form.RecordSource = sql 
' and perhaps: 
Me.sfrmBrands.Form.FilterOn = True 
+0

ありがとうございますが、この変更で問題は同じです。 –

+0

私はそれを見ることができます。あなたの構文は私をだました。 – Gustav

+0

キーワードがフィルタを設定しましたが、キーワードでテーブルをフィルタリングしてから、標準のフィルタ値を使用したい –

0

私は問題を発見したが、私は、そのためのソリューションを持っていません。

iのキーワードで検索した場合

Me.sfrmBrands.Form.RecordSource = sql 

クエリ名からサブフォーム名にテーブル名を変更するには、

Me.sfrmBrands.Form.RecordSource = sql 
関連する問題