2012-08-16 2 views
1

콤보 상자에서 입력하거나 선택한 문자열을 사용하여 연속 양식을 필터링해야한다는 요구 사항이 있습니다. 아래는 필터 문자열을 캡처하는 데 사용하려고 시도하는 코드입니다. 무슨 일이 일어날 지, 뒤에서 잡히는 문자열이 아닌 목록에 텍스트가 입력되면 콤보 상자가 Null임을 나타내는 오류가 대신 발생합니다.MS 액세스 필터 연속 양식

어디에서이 기능을 사용할 수 있습니까? 나는 단지 Combobox_Selected 이벤트에 코드를 추가하는 것을 고려하고있다. 그러나 그것은 사용자가 폼의 내용을 추가로 필터링 할 수있는 임의의 키워드를 입력 할 수있는 능력을주지 않을 것이다.

Private Sub txtUSPSKeySearch_Change() 
On Error GoTo Err_txtUSPSKeySearch_Change 
Dim searchStr As String 

       searchStr = txtUSPSKeySearch.Value 
        If (Not IsNull(searchStr) And Len(searchStr) > 1) Then 

        Else 

        ' Move the cursor to the end of the combo box. 
    Me.txtUSPSKeySearch.SetFocus 
    Me.txtUSPSKeySearch.SelStart = Len(Me.txtUSPSKeySearch.Value) 
       End If 

'Error Handling 
Exit_txtUSPSKeySearch_Change: 
    Exit Sub 
Err_txtUSPSKeySearch_Change: 
    If Err.Number = 5 Then 
     MsgBox "You must make a selection(s) from the list" _ 
       , , "Selection Required !" 
     Resume Exit_txtUSPSKeySearch_Change 
    Else 
     'Write out the error and exit the sub 
     MsgBox Err.Description 
     Resume Exit_txtUSPSKeySearch_Change 
    End If 
End Sub 

답변

0

"무슨 일이 텍스트 목록에 입력 할 때, 오히려 문자열보다 오류가 대신 콤보 박스가 널임을 나타내는 슬로우되는, 뒤쪽에 붙 잡히기 때문이다."

txtUSPSKeySearch가 null의 경우 널 문자열 데이터 형식이 아니기 때문에

Dim searchStr As String 

가이 할당이 실패합니다

당신은 searchStr은 문자열 데이터 유형이어야합니다 선언했다.

searchStr = txtUSPSKeySearch.Value 

당신은 txtUSPSKeySearch가 null의 경우 searchStr에게 빈 문자열을 제공하기 위해 Nz() 기능을 사용할 수 있습니다 ...

searchStr = Nz(Me.txtUSPSKeySearch.Value, vbNullString) 

그런 다음이에서 If 문을 변경할 수

If (Not IsNull(searchStr) And Len(searchStr) > 1) Then 

이것에 ...

If Len(searchStr) = 0 Then 

변경 이벤트 txtUSPSKeySearch에서이 모든 작업을 수행하고 있습니다. before update 이벤트를 사용하여 값의 유효성을 검사하고 after update 이벤트를 사용하여 유효한 값으로 처리하려는 다른 작업 (필터 조건을 적용 하시겠습니까?)을 수행하십시오.