Results 1 to 4 of 4
  1. #1
    gangel is offline Competent Performer
    Windows 7 64bit Access 2010 64bit
    Join Date
    Jun 2014
    Posts
    194

    Usinging the "where Builder" (AllenBrowne) to create filter - date not working

    Hey all,

    I'm using Allen brownes Criteria creator for forms for dynamic filters.
    If you haven't seen it, it pretty much constructs a where clause from your txt data on the form (filters).

    This is my code:

    Code:
    Private Sub ReFilterSubForm()
        '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 = "dd/mm/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.
          
          
        'Check Claim Number LIKE
        If Me.txtInsComp <> "" Then
            strwhere = strwhere & "[InsCompName] Like ""*" & Me.txtInsComp & "*"" AND "
        End If
        
        'Check Full Name LIKE
        If Me.txtDate <> "" Then
            strwhere = strwhere & "[PayDate] = #" & Me.txtDate & "# AND "
        End If
        
        'Check Employer Name LIKE
        If Me.txtPayAmt <> "" Then
            strwhere = strwhere & "[TotalPaymentValue] = " & Me.txtPayAmt & " AND "
        End If
        
        
        'Yes/No field and combo example. If combo is blank or contains "ALL", we do nothing.
        'If Me.cboFilterIsCorporate = -1 Then
        '    strWhere = strWhere & "([IsCorporate] = True) AND "
       ' ElseIf Me.cboFilterIsCorporate = 0 Then
        '    strWhere = strWhere & "([IsCorporate] = False) AND "
        'End If
        
        'Date field example. Use the format string to add the # delimiters and get the right international format.
        'If Not IsNull(Me.txtStartDate) Then
         '   strWhere = strWhere & "([EnteredOn] >= " & Format(Me.txtStartDate, conJetDate) & ") AND "
        'End If
        
        'Another date field example. Use "less than the next day" since this field has times as well as dates.
        'If Not IsNull(Me.txtEndDate) Then   'Less than the next day.
        '    strWhere = strWhere & "([EnteredOn] < " & Format(Me.txtEndDate + 1, conJetDate) & ") AND "
        'End If
        
        '***********************************************************************
        '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." - Removed as i dont need it to tell me no filter
        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

    Now it works for my first two filters but NOT when i use my date filter.
    Therefore I know the rest of the code is ok, but the date part is not!

    I am starting to use now() instead of date when making the records, however even the date() records arent working with the filter.


    It returns 0 records.

    Any ideas?

    Any ideas??

  2. #2
    gangel is offline Competent Performer
    Windows 7 64bit Access 2010 64bit
    Join Date
    Jun 2014
    Posts
    194
    hmmm

    ok so i got it working by fixing the code slightly, but it still only works for things that are saved as Date() and the Now() fields wont filter.

    I don't really know the way around this so I'm tempted just to save as date() and leave off the timing info

  3. #3
    ssanfu is offline Master of Nothing
    Windows XP Access 2010 32bit
    Join Date
    Sep 2010
    Location
    Anchorage, Alaska, USA
    Posts
    9,664
    Its because of the changes you made.
    Access REQUIRES date fields to be in the American format, ie "mm/dd/yyyy" AND to be delimited with hash marks "#".

    You changed this
    Code:
        Const conJetDate = "\#mm\/dd\/yyyy\#"   'The format expected for dates in a JET query string.
    to this
    Code:
        Const conJetDate = "dd/mm/yyyy"   'The format expected for dates in a JET query string.
    You are using the wrong date format and are missing the delimiters.

  4. #4
    June7's Avatar
    June7 is offline VIP
    Windows 7 64bit Access 2010 32bit
    Join Date
    May 2011
    Location
    The Great Land
    Posts
    52,825
    How to attach file: http://www.accessforums.net/showthread.php?t=70301 To provide db: copy, remove confidential data, run compact & repair, zip w/Windows Compression.

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

Similar Threads

  1. Replies: 3
    Last Post: 04-29-2014, 04:49 PM
  2. Replies: 3
    Last Post: 11-27-2012, 07:20 AM
  3. Replies: 8
    Last Post: 08-05-2011, 02:55 PM
  4. How to Filter When Using The "Create E-Mail" Wizard
    By MFriend in forum Import/Export Data
    Replies: 3
    Last Post: 07-16-2010, 09:45 AM
  5. Create "reset filter" button
    By vanlanjl in forum Access
    Replies: 0
    Last Post: 03-03-2009, 07:36 AM

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