2016-07-20 8 views
2

Ich baue eine Suche, während Sie Kombinationsfeld eintippen. Die Suche und Aktualisierung verwendet das Änderungsereignis.Auswahl des Kombinationsfeldes verhindern, um Text zu ändern

Private Sub ItemName_Change() 

Dim strText, strFind, strSQL, strSelect, strWhere, strOrderBy As String 
strText = Me.ItemName.Text 

strSelect = "SELECT DISTINCT [ItemName] FROM ItemsMaster " 
strWhere = "WHERE type = 'Sold Goods' " 
strOrderBy = " ORDER BY [ItemName];" 
If (Len(Trim(strText)) > 0) Then 
    'Show the list with only those items containing the types letters 
    strFind = "ItemsMaster.ItemName Like '" 
    For i = 1 To Len(Trim(strText)) 
     If (Right(strFind, 1) = "*") Then 
      strFind = Left(strFind, Len(strFind) - 1) 
     End If 
     strFind = strFind & "*" & Mid(strText, i, 1) & "*" 
    Next 

    strFind = strFind & "'" 
    strSQL = strSelect & strWhere & "AND " & strFind & strOrderBy 

    Me.ItemName.RowSource = strSQL 

Else 
    strSQL = strSelect & strWhere & strOrderBy 
    Me.ItemName.RowSource = strSQL 
End If 

Me.ItemName.Dropdown 


End Sub 

Aber Wenn ich versuche, die Elemente aus der Dropdown-Liste auszuwählen, aktualisiert er den Text und löst das Änderungsereignis. Gibt es eine Möglichkeit, wie der Benutzer durch die Liste ohne Kombinationsfeld scrollen kann, um den Text im Textfeld zu ändern?

+0

Haben Sie versucht, das durch Drücken von Tasten statt durch das Änderungsereignis der Combobox auszuführen? –

Antwort

1

Sie wahrscheinlich dieses Problem, indem geprüft wird, ob die List überwinden könnten, ist größer als -1 zu Beginn Ihrer Event-Handler, und beenden, wenn es, zum Beispiel:

Private Sub ItemName_Change() 
    If ItemName.ListIndex > -1 Then 
     Exit sub 
    End if 

    ... 
End Sub 

ich aber denke, dass es eine eine gute Chance, dass Sie besser gar keine Combobox verwenden würden, aber seine Funktionalität imitieren mit (a) einem Textfeld (in das der Text eingegeben wird und das Änderungsereignis auslöst, das Sie geschrieben haben) & (b) eine Listbox , die die Ergebnisse der Suche anzeigt - dann, wenn der Benutzer ein Element auswählt, wird diese Aktion von der Eintragssteuerung getrennt.