2016-07-22 4 views
0

ほとんどの場合動作するコンボボックスファジー検索を作成しました。
問題がありますか? 2文字を入力すると、1だけが表示されます。MSアクセスコンボボックスファジー検索

「KeyPress」イベントのコンボボックスのコードです。例えば

Private Sub cmbBASELINE_SEARCH_KeyPress(KeyAscii As Integer) 
     Dim strSQL As String 


     strSQL = "SELECT tbl_COB_CAT.COB_ID, tbl_COB_CAT.BASELINE " _ 
       & "FROM tbl_COB_CAT " _ 
       & "WHERE tbl_COB_CAT.BASELINE Like '*" & Me.cmbBASELINE_SEARCH.Text & "*'" _ 
       & "ORDER BY tbl_COB_CAT.BASELINE; " 



     Debug.Print strSQL 


       Select Case KeyAscii 
       Case 65 To 90, 48 To 57, 8 ' A-Z, 0-9 and backspace 
       'Let these key codes pass through 
        Me.cmbBASELINE_SEARCH.RowSource = strSQL 
        Me.cmbBASELINE_SEARCH.Dropdown 


       Case 97 To 122, 8, 127 'a-z, backspace and delete 
       'Let these key codes pass through 
        Me.cmbBASELINE_SEARCH.RowSource = strSQL 
        Me.cmbBASELINE_SEARCH.Dropdown 
       Case Else 
       'All others get trapped 
        KeyAscii = 0 ' set ascii 0 to trap others input 
       End Select 


End Sub 

私が入力した場合、「CAB」は、それがを検索CA 私が入力した場合、「25」は、それが

を検索し、私はあることをそれを得るために行うには何が必要ですより正確な? また、コンボボックス内のテキストを消去すると、絞り込まれたすべての値がドロップダウンリストに再表示されますが、フィルタリングされたリストを通常の状態に戻すにはもう一度「バックスペース」を押す必要があります。

私には何が欠けていますか?

答えて

0

KeyUpイベントではなく、KeyPressイベントを使用していると思われます。 keypressを使うと、押したキーは理論的にはコントロールのTextにまだ追加されていません - あなたはあらかじめそれを閉じ込めています。

したがって、私はあなたのdebug.print SQLステートメントの出力がこれを反映していると思います。このことができます

Private Sub cmbBASELINE_SEARCH_KeyPress(KeyAscii As Integer) 
    Dim strSQL As String 
    dim valu as string: valu = "" 

    Select Case KeyAscii 
     Case 65 To 90, 48 To 57, 97 To 122, 8, 127 'A-Z, a-z, 0-9, BS & Del 
      'Let these key codes pass through 
      valu = cboBASELINE_SEARCH.Text & chr(KeyAscii) 
     Case Else 
      'All others get trapped 
      KeyAscii = 0 ' set ascii 0 to trap others input 
      Exit Sub 
    End Select 

    strSQL = "SELECT COB_ID, BASELINE FROM tbl_COB_CAT " _ 
      & "WHERE BASELINE LIKE '*" & valu & "*' ORDER BY 2" 

    Me.cmbBASELINE_SEARCH.RowSource = strSQL 
    Me.cmbBASELINE_SEARCH.Dropdown 

    Debug.Print strSQL 
End Sub 

希望を:私はその代わりに、あなたが持っているものの、その後を示唆している

は、あなたはこのようにそれを行う必要があります。

+0

私はそれが好きです!期待どおりに機能します。 – monty327

0

または単にテキストボックスのChangeイベントを使用して、そのイベントプロシージャの.Textプロパティを使用することができます。単一のキーストロークを手で個別にトラップする理由はありません。

Nitpick:あなたの検索は曖昧ではありません。通常の全文検索です。

関連する問題