Very Big filter problem. need help

AccessFreak

Registered User.
Local time
Tomorrow, 00:26
Joined
Feb 19, 2009
Messages
69
Oke this is maybe toooo difficult. But there has to be an answer for thisone.

21mywbm.jpg


.Zip Sample Db: http://www.megaupload.com/?d=B3CEGPGX

In this picture there are 6 comboboxes for lookup. The lookup works. So if i select a value from the combobox it goes directly to the right record.

BUT There is a problem.

The comboboxes need a filter option. All possibilities have to work. So if combobox 1 is empty and combobox 6 is written then it has to filter without the value in combobox 1. So for every combobox there has to be a filter.

The filter has to work after the user clicks Apply Filter.

Next to that is a LIKE * function within the filter. But has to do that automatically without the user needs to click *.

Can someone help me with this.. because I think its very difficult

thank you
 
Last edited:
Please supply a copy of your database, in 2003 format if possible, with sample data and form etc. I have done something similar hwere the combox are null and each time a combox box is updated the data is automatically displayed depending on the comboxes selection.
 
can you post what your query design looks like (for your listbox?) i would imagine that you would have to have something like:

Code:
Like "*" & Forms!frmYourForm.cmbYourCombo1 & "*"
for EACH column, BUT one criteria row at a time, i.e., in your query design, have the like statement in the first criteria row in the first field, then for the second field put ITS like statement in the row below that, so it ends up looking like a set of steps...
 
Please supply a copy of your database, in 2003 format if possible, with sample data and form etc. I have done something similar hwere the combox are null and each time a combox box is updated the data is automatically displayed depending on the comboxes selection.

Oke if you want to look at the database. You can download the database in my previous answer.

What I want is very clear. When I click on the apply filter button, it needs to check the entry in the comboboxes. Some entries are NULL en some are NOT NULL. After clicking Apply filter button, the only records that I want need to be listed. With the remove Filter button, everything needs to be normal again.

The possibilities at clicking Apply filter button must be like this:

Cbbox 1, Cbbox 2, Cbbox 3, Cbbox 4, Cbbox5, Cbbox 6
Filled Empty Empty Empty Empty Empty
Empty Filled Filled Empty Empty Empty
Filled Empty Empty Empty Empty Filled
etc. etc.. ect...

I think there are more than 200000 possibilities if i'm right because 6X6X6X6X6X6X6 = ~2700000 possibilities

I think the best thing to do is to make a good query at clicking Apply Filter button.

Something like this:

SELECT IIF(Forms.frmEmployees.SubformEmployees.Form.txtUsername IS NOT NULL, tblEmployee.Username LIKE Forms.frmEmployees.SubformEmployees.Form.txtUsername *, ,) AS tblEmployee.Username (etc.. etc....for every combobox behind this.)
From tblEmployee;
 
Cbbox 1, Cbbox 2, Cbbox 3, Cbbox 4, Cbbox5, Cbbox 6
Filled Empty Empty Empty Empty Empty
Empty Filled Filled Empty Empty Empty
Filled Empty Empty Empty Empty Filled
etc. etc.. ect...

i don't think that will be possible, or even useful.

i see your db is really rather small when compressed. but i can't open rar. please ZIP your db and ATTACH TO YOUR POST ON THIS FORUM

...please.
 
Allen Brown has easy to use formsearch which uses the formfilter property. I have choped down it a bit for you to give you an ide of how it works:

Code:
'Purpose:   This module illustrates how to create a search form, _
            where the user can enter as many or few criteria as they wish, _
            and results are shown one per line.
'Note:      Only records matching ALL of the criteria are returned.
'Author:    Allen Browne ([EMAIL="allen@allenbrowne.com"]allen@allenbrowne.com[/EMAIL]), June 2006.
Option Compare Database
Option Explicit

Private Sub cmdFilter_Click()
    'Purpose:   Build up the criteria string form the non-blank search boxes, and apply to the form's Filter.
    'Notes:     1. We tack " AND " on the end of each condition so you can easily add more search boxes; _
                        we remove the trailing " AND " at the end.
    '           2. The date range works like this: _
                        Both dates      = only dates between (both inclusive. _
                        Start date only = all dates from this one onwards; _
                        End date only   = all dates up to (and including this one).
    Dim strWhere As String                  'The criteria string.
    Dim lngLen As Long                      'Length of the criteria string to append to.
    'Const conJetDate = "\#mm\/dd\/yyyy\#"   'The format expected for dates in a JET query string.
    
    '***********************************************************************
    'Look at each search box, and build up the criteria string from the non-blank ones.
    '***********************************************************************
    'Text field example. Use quotes around the value in the string.
    If Not IsNull(Me.username) Then
        strWhere = strWhere & "([username] like """ & Me.username & "*"") AND "
    End If
    
     If Not IsNull(Me.FirstName) Then
        strWhere = strWhere & "([Firstname] like """ & Me.FirstName & "*"") AND "
    End If
    
    
    'Another text field example. Use Like to find anywhere in the field.
    If Not IsNull(Me.MiddleName) Then
        strWhere = strWhere & "([MidleName] Like ""*" & Me.Midlename & "*"") AND "
    End If
    
    ' etc for the rest of your combos
    
    
    
    '***********************************************************************
    'Chop off the trailing " AND ", and use the string as the form's Filter.
    '***********************************************************************
    'See if the string has more than 5 characters (a trailng " AND ") to remove.
    lngLen = Len(strWhere) - 5
    If lngLen <= 0 Then     'Nah: there was nothing in the string.
        MsgBox "No criteria", vbInformation, "Nothing to do."
    Else                    'Yep: there is something there, so remove the " AND " at the end.
        strWhere = Left$(strWhere, lngLen)
        'For debugging, remove the leading quote on the next line. Prints to Immediate Window (Ctrl+G).
        'Debug.Print strWhere
        
        'Finally, apply the string as the form's Filter.
        Me.filter = strWhere
        Me.FilterOn = True
    End If
End Sub
Private Sub cmdReset_Click()
    'Purpose:   Clear all the search boxes in the Form Header, and show all records again.
    Dim ctl As Control
    
    'Clear all the controls in the Form Header section.
    For Each ctl In Me.Section(acHeader).Controls
        Select Case ctl.ControlType
        Case acTextBox, acComboBox
            ctl.Value = Null
        End Select
    Next
    
    'Remove the form's filter.
    'Me.FilterOn = False
    Me.filter = "(False)"
    Me.FilterOn = True
    
End Sub
 
Private Sub Form_BeforeInsert(Cancel As Integer)
    'To avoid problems if the filter returns no records, we did not set its AllowAdditions to No.
    'We prevent new records by cancelling the form's BeforeInsert event instead.
    'The problems are explained at [URL]http://allenbrowne.com/bug-06.html[/URL]
    Cancel = True
    MsgBox "You cannot add new clients to the search form.", vbInformation, "Permission denied."
End Sub
    
Private Sub Form_Open(Cancel As Integer)
    'Remove the single quote from these lines if you want to initially show no records.
    Me.filter = "(False)"
    Me.FilterOn = True
End Sub

For the complete version visit it here: http://allenbrowne.com/ser-62.html

Hope this helps.

JR
 
Attached is sample database using combo boxes as filters and also using the TAG property of each combo box to build the SQL for the search.

When a combo box is updated ALL the records matching that combo box is displayed. If more than one combo box is updated then ALL the records matching the combo boxes are displayed.

Please contact me if require further explanation of the code.
 

Attachments

Users who are viewing this thread

Back
Top Bottom