2016-07-22 2 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 : 검색에 대해 아무 것도 모호하지 않으며 일반 텍스트 검색입니다.