Results 1 to 11 of 11
  1. #1
    elbartje is offline Novice
    Windows 10 Access 2013 32bit
    Join Date
    Mar 2017
    Posts
    23

    Add dynamic filter in query

    Hello all



    I want to filter my query with the input of a form.
    I use this filter: LIKE "*" & NameIputBox & "*" now when I leave the inputbox empty I don't see the blank cells, how can I fix this ?

  2. #2
    andy49's Avatar
    andy49 is offline VIP
    Windows 10 Access 2007
    Join Date
    Nov 2016
    Location
    London
    Posts
    1,051
    Try using + rather than &


    Sent from my iPhone using Tapatalk

  3. #3
    elbartje is offline Novice
    Windows 10 Access 2013 32bit
    Join Date
    Mar 2017
    Posts
    23
    Does not work,

    I tried to set the NameIputBox.value = "" so then I get this => LIKE "*" & "" & "*"
    But still the NULL values get filtered out.

  4. #4
    orange's Avatar
    orange is offline Moderator
    Windows 10 Access 2010 32bit
    Join Date
    Sep 2009
    Location
    Ottawa, Ontario, Canada; West Palm Beach FL
    Posts
    16,870
    Show us
    a)the query sql
    and
    b)your tables/relationship view as jpg

  5. #5
    elbartje is offline Novice
    Windows 10 Access 2013 32bit
    Join Date
    Mar 2017
    Posts
    23
    SQL:
    SELECT ttLijnId, tbl8DRapport.memKlachtBetreft, tbl8DRapport.IDZone, tblZone.Zone, tblPersoon.strNaam, tbl8DRapportSoort.strSoortBeschrijving, tblProductlijn.strProductLijnBeschrijving, tbl8DRapport.dtm8DRapportAfgesloten, tbl8DRapport.strActualStatus
    FROM tblPersoon INNER JOIN (tbl8DRapportSoort INNER JOIN (tblProductlijn INNER JOIN (tbl8DRapport LEFT JOIN tblZone ON tbl8DRapport.IDZone = tblZone.IDZone) ON tblProductlijn.lngIdProductLijn = tbl8DRapport.lng8DRapportProductLijnId) ON tbl8DRapportSoort.lngId8DRapportSoort = tbl8DRapport.lng8DRapportSoortId) ON tblPersoon.lngIdPersoon = tbl8DRapport.lngAanvragerId
    WHERE (((tbl8DRapport.strReden) Like "*" & Forms!FilterForm!Woord_filter & "*") And ((tblZone.Zone) Like "*" & Forms!FilterForm!Zone_filter & "*"))
    ORDER BY tbl8DRapport.dtmAanmaak DESC;

    Forms!FilterForm!Woord_filter and Forms!FilterForm!Zone_filter are inputboxes from a form.
    When I leave the inputbox is empty I also want to show empty cells.

    This are the tables:
    Click image for larger version. 

Name:	table.png 
Views:	19 
Size:	32.8 KB 
ID:	27717

  6. #6
    andy49's Avatar
    andy49 is offline VIP
    Windows 10 Access 2007
    Join Date
    Nov 2016
    Location
    London
    Posts
    1,051
    What are the default values of the textbox?


    Sent from my iPhone using Tapatalk

  7. #7
    orange's Avatar
    orange is offline Moderator
    Windows 10 Access 2010 32bit
    Join Date
    Sep 2009
    Location
    Ottawa, Ontario, Canada; West Palm Beach FL
    Posts
    16,870
    You could try to adjust this code (best guess at the moment)
    Code:
    WHERE (
            ((tbl8DRapport.strReden) LIKE "*" & Forms ! FilterForm ! Woord_filter & "*")
            AND ((tblZone.Zone) LIKE "*" & Forms ! FilterForm ! Zone_filter & "*")
            )
    to
    Code:
    WHERE (
            ((tbl8DRapport.strReden) LIKE "'*" & Forms ! FilterForm ! Woord_filter & "*' ")
            AND ((tblZone.Zone) LIKE "'*" & Forms ! FilterForm ! Zone_filter & "*' ")
            )

  8. #8
    elbartje is offline Novice
    Windows 10 Access 2013 32bit
    Join Date
    Mar 2017
    Posts
    23
    The default value is empty (null) , but if I use "" it also does not work.

    @Orange: That does not work.

    I got another idea but I dont know how to do that: If I create a new column depending on the culumn I want to filter: When It has no value I say it is 0 when it contains a value it is 1. Then I can use this new column to filter.

    I can also just program it in VBA but I was hoping there is a more "clean way".

    Already big thanks for the help.

  9. #9
    andy49's Avatar
    andy49 is offline VIP
    Windows 10 Access 2007
    Join Date
    Nov 2016
    Location
    London
    Posts
    1,051
    In query design mode what about adding the or option of forms!filterform!woord_filter is null.


    Sent from my iPhone using Tapatalk

  10. #10
    orange's Avatar
    orange is offline Moderator
    Windows 10 Access 2010 32bit
    Join Date
    Sep 2009
    Location
    Ottawa, Ontario, Canada; West Palm Beach FL
    Posts
    16,870
    How about posting your database (zip format) with instructions to get to the specific issue?

  11. #11
    elbartje is offline Novice
    Windows 10 Access 2013 32bit
    Join Date
    Mar 2017
    Posts
    23
    I fixed my problem, I just generate the correct SQL query with VBA depending on what I fill in in the filter.
    It does not look clean but it works, if someone knows a cleaner or easier way

    Click image for larger version. 

Name:	filter.jpg 
Views:	13 
Size:	25.2 KB 
ID:	27723

    Private Sub btnZoek_Click()
    On Error GoTo Err_btnZoek_Click

    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim SQLSlelect, SQLFrom, SQLOrder As String
    Dim SQLWhere1, SQLWhere2, SQLWhere3 As String

    Dim SQL As String
    Dim Afgesloten_filter_bit As Integer


    stDocName = "Formulier1"
    DoCmd.OpenForm stDocName, , , stLinkCriteria

    SQLSlelect = "SELECT tbl8DRapport.lngId8DRapport, tbl8DRapport.str8DRapportNummer, tbl8DRapport.dtmAanmaak, tbl8DRapport.strReden, tbl8DRapport.lngAanvragerId, tbl8DRapport.lng8DRapportSoortId, tbl8DRapport.lng8DRapportProductLijnId, tbl8DRapport.memKlachtBetreft, tbl8DRapport.IDZone, tblZone.Zone, tblPersoon.strNaam, tbl8DRapportSoort.strSoortBeschrijving, tblProductlijn.strProductLijnBeschrijving, tbl8DRapport.dtm8DRapportAfgesloten, tbl8DRapport.strActualStatus "
    SQLFrom = "FROM tblPersoon INNER JOIN (tbl8DRapportSoort INNER JOIN (tblProductlijn INNER JOIN (tbl8DRapport LEFT JOIN tblZone ON tbl8DRapport.IDZone = tblZone.IDZone) ON tblProductlijn.lngIdProductLijn = tbl8DRapport.lng8DRapportProductLijnId) ON tbl8DRapportSoort.lngId8DRapportSoort = tbl8DRapport.lng8DRapportSoortId) ON tblPersoon.lngIdPersoon = tbl8DRapport.lngAanvragerId "
    SQLOrder = "ORDER BY tbl8DRapport.dtmAanmaak DESC;"


    'Generate where statement:

    If Nz(Forms.FilterForm.Woord_filter.Value, "") = "" And Nz(Forms.FilterForm.Zone_filter.Value, "") = "" Then
    SQLWhere1 = ""
    GoTo hier1
    Else
    End If

    If Nz(Forms.FilterForm.Woord_filter.Value, "") <> "" And Nz(Forms.FilterForm.Zone_filter.Value, "") <> "" Then
    SQLWhere1 = "WHERE (((tbl8DRapport.strReden) Like " & Chr(34) & "*" & Chr(34) & " & Forms!FilterForm!Woord_filter & " & Chr(34) & "*" & Chr(34) & ") AND ((tblZone.Zone) Like " & Chr(34) & "*" & Chr(34) & " & Forms!FilterForm!Zone_filter & " & Chr(34) & "*" & Chr(34) & ") "
    SQLWhere2 = ")"
    GoTo hier1
    End If

    If Forms.FilterForm.Afgesloten_filter.Value <> -1 Then SQLWhere2 = ")"

    If Nz(Forms.FilterForm.Woord_filter.Value, "") = "" Then
    Else
    SQLWhere1 = "WHERE (((tbl8DRapport.strReden) Like " & Chr(34) & "*" & Chr(34) & " & [Forms]![FilterForm]![Woord_filter] & " & Chr(34) & "*" & Chr(34) & ") "

    End If

    If Nz(Forms.FilterForm.Zone_filter.Value, "") = "" Then
    Else
    SQLWhere1 = "WHERE (((tblZone.Zone) Like " & Chr(34) & "*" & Chr(34) & " & [Forms]![FilterForm]![Zone_filter] & " & Chr(34) & "*" & Chr(34) & ") "

    End If

    hier1:

    If Forms.FilterForm.Afgesloten_filter.Value = -1 Then
    If Nz(Forms.FilterForm.Zone_filter.Value, "") <> "" Or Nz(Forms.FilterForm.Woord_filter.Value, "") <> "" Then
    SQLWhere2 = "AND ((tbl8DRapport.dtm8DRapportAfgesloten) Is Null)) "
    Else
    SQLWhere2 = "WHERE (((tbl8DRapport.dtm8DRapportAfgesloten) Is Null)) "
    End If
    Else

    End If

    SQL = SQLSlelect & SQLFrom & SQLWhere1 & SQLWhere2 & SQLOrder

    Forms.Formulier1.RecordSource = SQL
    Forms.Formulier1.Requery

    Exit_btnZoek_Click:
    Exit Sub

    Err_btnZoek_Click:
    MsgBox Err.Description
    Resume Exit_btnZoek_Click

    End Sub

Please reply to this thread with any new information or opinions.

Similar Threads

  1. Replies: 2
    Last Post: 02-20-2017, 11:28 PM
  2. Dynamic Form, Dynamic labels/ captions?
    By JFo in forum Programming
    Replies: 15
    Last Post: 10-12-2011, 08:33 PM
  3. Printing Dynamic Filter Records
    By emilyrogers in forum Forms
    Replies: 6
    Last Post: 02-15-2011, 03:05 AM
  4. Replies: 1
    Last Post: 07-30-2010, 10:28 AM
  5. Dynamic SQL Query
    By Squeaner in forum Queries
    Replies: 0
    Last Post: 09-25-2008, 02:37 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Other Forums: Microsoft Office Forums