2016-07-13 4 views
1

私が注文のデータベースとAccessデータベースを持っていると私のユーザーが使用するメインフォームは、トップが素敵なGUIレコードビューアと下部であることと、分割フォームビューは、それらのレコードのデータシートのリストビューです。フォームでアクセス分割形成する複数のフィルタ

、私は、ユーザーが注文番号がデータシートにファイラーてもらうために数字を入力することができますテキストボックスを持っています。コードは_Change()の下にあるので、積極的に一致する注文番号を持つデータシートを更新しています。私は、ユーザーを許可するオプションのグループを作成し

ベンダー、ディストリビュータ、契約:

ステータス:保留中、オープン、
タイプ休館

注文は、次のようないくつかのフィールドを持っていますOPENを選択してからのみを表示するオーダーまたはOPEN & を開くベンダーベンダーオーダー。コードは_Click()の下にあり、それぞれのケースについてCaseステートメントとフォームフィルターで実現します。

しかし、私の問題は、オプションの1つが選択され、ユーザーが注文番号を入力し始めると、注文番号で検索するコードがフィルターを空白にし、オプショングループ選択で設定されたフィルターを無視するということです。

レコードをフィルタリングするケースを選択して、formの検索textboxのエントリを持つレコードを検索する方法が考えられますか?

私は、フィルタを消したが、その後の検索をこのタイプのフィルタを行うためのアイデア方法があるかどうかを知りたいと思った私のテキストボックス検索のコードの一部を削除する必要が推測しています。

ありがとうございます。

アップデート1

以下の私のコードを追加しました。これは、ユーザーが部品番号(PARTNO)を検索するために使用するコンボボックス/テキストボックスです。部品番号の任意の部分を入力することができ、フィルタは新しい文字で入力すると自動的にフィルタリングされます。

Private Sub cmbPARTNOSEARCH_Change() 

If Nz(Me.cmbPARTNOSEARCH.Text) = "" Then 
Me.cmbPARTNOSEARCH.Enabled = True 
Me.Form.Filter = "" 
Me.FilterOn = False 

ElseIf Me.cmbPARTNOSEARCH.ListIndex <> -1 Then 
If Me.cmbPARTNOSEARCH.ListIndex <> -1 Then 
Me.Form.Filter = "[PARTNO] = '" & _ 
Replace(Me.cmbPARTNOSEARCH.Text, "'", "''") & "'" 
Me.FilterOn = True 

Else 
Me.Form.Filter = "[PARTNO] Like '*" & _ 
Replace(Me.cmbPARTNOSEARCH.Text, "'", "''") & "*'" 
Me.FilterOn = True 

End If 
End If 

Me.cmbPARTNOSEARCH.SetFocus 
Me.cmbPARTNOSEARCH.SelStart = Len(Me.cmbPARTNOSEARCH.Text) 

End Sub 
+0

あなたのお手伝いをするために、既存のコードを確認する必要があります。質問を編集して追加してください。 – Andre

+0

コードが追加されました。ありがとうございました。 – Luna

答えて

0

すべての(両方の)フィルタコントロールを見て、そこからフィルタを作成して適用する別個の関数が必要です。

最後の2行を除き、_Changeサブのすべてがその機能に入り、オプショングループの_Clickコードになります。

機能は、両方のフィルタコントロールを見て、両方が設定されている場合は、フィルターを構築します。
は、これは、両方のイベントプロシージャから呼び出されます。

編集:ここでは

は、複数のフィルタコントロールと検索フォームの良い例である:あなたのケースでは
http://allenbrowne.com/ser-62.html

、あなたがcmbPARTNOSEARCH_Change()上の関数を呼び出すされているので、あなたが取る必要がありますコンボボックスがフォーカスを持っているかどうか(その.Textプロパティを使用するかどうか)(その.Valueを使用します)。

これにはScreen.ActiveControlを使用するか、関数にパラメータを渡してその区別を行うことができます。


サイドノート:あなたのコードでは、意味がありません

ElseIf Me.cmbPARTNOSEARCH.ListIndex <> -1 Then 
    If Me.cmbPARTNOSEARCH.ListIndex <> -1 Then 

を持っています。

関連する問題