filter werkt niet goed

Status
Niet open voor verdere reacties.

Theo65

Gebruiker
Lid geworden
20 mrt 2023
Berichten
55
Bijgesloten een test database met een filter.
Als ik een reset doe dan krijg ik alle records.
Als ik daarna zoek, dan lijkt het of ik alleen de records krijg waar alle gegevens van zijn ingevuld.
Iemand idee wat ik kan doen om dit op te lossen?
 

Bijlagen

Om het probleem te genereren hoef je geen reset te doen. Als je meteen een zoekopdracht doet, heb je het probleem ook al. Heeft uiteraard te maken met de null-waardes.
Wat je kan doen is de zoekvelden stuk voor stuk langslopen en alleen een stukje aan de string (sFilter) toevoegen als het betreffende criterium is ingevuld. Iets als (maar dan voor alle velden):
Code:
sFilter = ""

If Not IsNull(Me.TxtAchternaam) Then
    If sFilter = "" Then
        sFilter = "Achternaam like '*" & Me.TxtAchternaam & "*'"
    End If
End If


If Not IsNull(Me.TxtVoornamen) Then
    If sFilter <> "" Then
        sFilter = sFilter & " AND "
    End If
    sFilter = sFilter & "Voornaam like '*" & Me.TxtVoornamen & "*'"
End If


If Not IsNull(Me.TxtTussenvoegsels) Then
    If sFilter <> "" Then
        sFilter = sFilter & " AND "
    End If
    sFilter = sFilter & "Tussenvoegsel like '*" & Me.TxtTussenvoegsels & "*'"
End If
 
Laatst bewerkt:
Ja heeft inderdaad met lege velden te maken. Heb jou methode gebruikt en nu werkt het. Bedankt
 
Ik heb het al talloze keren hier uitgelegd, en nog steeds zie ik helpers hier een (in mijn ogen) linke oplossing geven voor filters. En ik blijf dus zeggen: gebruik de veilige optie, en dat is deze:

PHP:
If Not IsNull(Me.TxtAchternaam) Then
   sFilter = "Achternaam like ""*" & Me.TxtAchternaam & "*"""
End If
If Not IsNull(Me.TxtVoornamen) Then 
   If sFilter <> "" Then sFilter = sFilter & " AND "
   sFilter = sFilter & "Voornaam like ""*" & Me.TxtVoornamen & "*"""
End If

Een aantal opmerkingen bij deze variant:
1. Als je een variabele declareert, is die altijd leeg. Je hoeft hem dus niet leeg te maken, of te checken (bij de eerste voorwaarde) of hij leeg is. Dat is-ie namelijk al.
2. (Hier gaat het om) gebruik geen enkele quoots in een filter, als de kans bestaat dat in het veld óók enkele quoots kunnen voorkomen. Gebruik dus altijd de dubbele quoots, dan kan er niks fout gaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan