IK heb een lijst met daarin allemaal debiteuren. Via een textbox (txtdebiteurnummer) kan ik deze lijst "live" filteren. De lijst veranderd terwijl ik type.
Nu is het zo dat de lijst niet de oorspronkelijke waardes laat zien wanneer ik de textbox leegmaak. Eigenlijk zou de lijst zijn begin waardes moeten laten zien wanneer de textbox leeg wordt gemaakt. Hoe voeg ik dat toe aan de code?
Edit: Wanneer ik backspace gebruik worden er steeds meer resultaten zichtbaar maar het laatste stapje, een lege textbox, laat niet de complete lijst (zonder filter) zien.
Code achter de txtdebiteurnummer:
Macro voor de live search:
Nu is het zo dat de lijst niet de oorspronkelijke waardes laat zien wanneer ik de textbox leegmaak. Eigenlijk zou de lijst zijn begin waardes moeten laten zien wanneer de textbox leeg wordt gemaakt. Hoe voeg ik dat toe aan de code?
Edit: Wanneer ik backspace gebruik worden er steeds meer resultaten zichtbaar maar het laatste stapje, een lege textbox, laat niet de complete lijst (zonder filter) zien.
Code achter de txtdebiteurnummer:
Code:
Private Sub txtDebiteurnummer_Change()
Dim strFullList As String
Dim strFilteredList As String
If blnSpace = False Then
Me.Refresh
strFullList = "SELECT Debiteurnummer, Debiteurnaam, DebZoekNaam FROM DebiteurenVertineoQuery ORDER BY Debiteurnummer;"
strFilteredList = "SELECT Debiteurnummer, Debiteurnaam, Telefoonnummer FROM DebiteurenVertineoQuery WHERE [Debiteurnummer] LIKE ""*" & Me.txtDebiteurNummer.Value & _
"*"" OR [Debiteurnaam] LIKE ""*" & Me.txtDebiteurNummer.Value & "*"" OR [DebZoekNaam] LIKE ""*" & Me.txtDebiteurNummer.Value & "*"" ORDER BY [Debiteurnummer]"
fLiveSearch Me.txtDebiteurNummer, Me.lstDebiteuren, strFullList, strFilteredList
End If
End Sub
Macro voor de live search:
Code:
Function fLiveSearch(ctlSearchBox As TextBox, ctlFilter As Control, _
strFullSQL As String, strFilteredSQL As String, Optional ctlCountLabel As Control)
Const iSensitivity = 0
Const blnEmptyOnNoMatch = True
On Error GoTo err_handle
ctlSearchBox.SetFocus
ctlSearchBox.SelStart = Len(ctlSearchBox.Value) + 0
If ctlSearchBox.Value <> "" Then
If Len(ctlSearchBox.Value) > iSensitivity Then
ctlFilter.RowSource = strFilteredSQL
If ctlFilter.ListCount > 0 Then
ctlSearchBox.SetFocus
ctlSearchBox.SelStart = Len(ctlSearchBox.Value) + 0
Else
If blnEmptyOnNoMatch = True Then
ctlFilter.RowSource = ""
Else
ctlFilter.RowSource = strFullSQL
End If
End If
Else
ctlFilter.RowSource = strFullSQL
End If
Else
ctlFilter.RowSource = strFullSQL
End If
If IsMissing(ctlCountLabel) = False Then
ctlCountLabel.Caption = "Weergave van " & Format(ctlFilter.ListCount - 1, "#,##0") & " record(s)"
End If
Exit Function
err_handle:
Select Case Err.Number
Case 91
Case 94
Case Else
MsgBox "Er heeft zich een onverwachte fout voorgedaan" & vbCrLf & Err.Description & _
vbCrLf & "Error " & Err.Number & vbCrLf & "Line: " & Erl
End Select
End Function
Laatst bewerkt: