Solved

Access report source with date range

Posted on 2014-03-20
8
548 Views
Last Modified: 2014-03-21
I have a ACCESS 2010 subreport with the report source property something like:
Select * from tblNotes where NoteDate > getStartDate()

The function getStartDate() gets date from a form text box:
...
Public Function getWorkloadStartDate() As Date
    'function pair used in srptWorkload, srptCurrentBid etc  record source
    getWorkloadStartDate = Format(Forms!frmWorkLoadPrint_Option.dtpFrom.Value, "yyyy/mm/dd")
End Function

Open in new window


I have also tried ...

Public Function getWorkloadEndDate() As Date
    getWorkloadEndDate = Format(Forms!frmWorkLoadPrint_Option.dtpTo.Value, "yyyy/mm/dd")
End Function
Public Function getWorkloadStartDate2() As Date
    'function pair used in srptCurrentBid etc  record source
    getWorkloadStartDate2 = Format(Forms!frmWorkLoadPrint_Option.dtpFrom.Value, "\#yyyy\-mm\-dd\#")
End Function
Public Function getWorkloadEndDate2() As Date
    getWorkloadEndDate2 = FormatForms!frmWorkLoadPrint_Option.dtpTo.Value, "\#yyyy\-mm\-dd\#")
End Function


Public Function getdCutOffDate() As Date

    getdCutOffDate = CDate(dCutOffDate)
    
End Function

Open in new window


...

My report is almost correct, however one user has noted that it does not pick up one of his notes.  I did some testing and although it works perfectly for most notes, it has an issue with a few notes.
If I hard code the record source to be:
Select * from tblNotes where NoteDate > #20/02/2014#
it collects the correct number of notes, however, if the form textbox is 20/02/2014 it misses one or two notes.

If this was VBA know I could use :
"Select * from Notes where noteDate > #" & format(FromDate "yyyy/mm/dd") & "#"

but how do I replicate this in report record source property box?  (remember it is a SUB report, not a report, so I can't set me.recordsource using VBA on the report open event since master child won't work)

Please note I am in Australia where date format is dd/mm/yyyy, not mm/dd/yyyy.
Also note that I have used yyyy/mm/dd after testing dd/mm/yyyy and mm/dd/yyyy unsuccessfully.
I HATE working with dates!
0
Comment
Question by:MonkeyPie
  • 3
  • 3
  • 2
8 Comments
 
LVL 40

Assisted Solution

by:als315
als315 earned 250 total points
ID: 39944460
You should convert text field from form to Date with:
Datevalue(FormatForms!frmWorkLoadPrint_Option.dtpTo.Value)
Do not use # or Cdate if your date format is not mm/dd/yyyy
You can also use DateSerial function
0
 

Author Comment

by:MonkeyPie
ID: 39944487
Thanks ALS315 but that did not work.  It had exactly the same result as:
getWorkloadStartDate = Format(Forms!frmWorkLoadPrint_Option.dtpFrom.Value, "yyyy/mm/dd")

I also tried "dd/mm/yyyy" again just to check.  Also, only getting 55 out of the 56 notes it finds if I hard code in date.

I added some debug.print lines to check form date "01/03/2014" and resulting date from function (also "01/03/2014") which are both correct.

So, just to confirm if function returns 01/03/2014 as type DATE, this gives a different result to hardcoded record source:
Select * from xx where NoteDate > #01/03/2014#

- where I expect the result to be the same.
0
 

Author Comment

by:MonkeyPie
ID: 39944502
I have done more testing and found this:

If I change the hardcoded recordsource to :

Select * from xx where NoteDate > #03/01/2014#
(switching dd/mm to mm/dd)
I then get the same BAD result as I get with my function.
So, it is obviously to do with swtiching mm and dd around, but I can't work out how to fix it!  Any ideas?
Can I say:
datevalue(format(NoteDate, "dd/mm/yyyy")) > datevalue(format(formDate, "dd/mm/yyyy")?

Seems overly complicated.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 50

Accepted Solution

by:
Gustav Brock earned 250 total points
ID: 39944562
Your original query is OK, but the function is not correct as Format returns a string. It shall read:
Public Function getWorkloadStartDate() As Date
    ' Function pair used in srptWorkload, srptCurrentBid etc. record source.
    getWorkloadStartDate = DateValue(Forms!frmWorkLoadPrint_Option!dtpFrom.Value)
End Function

Open in new window

/gustav
0
 
LVL 40

Expert Comment

by:als315
ID: 39945014
Thanks, Gustav.
I hope sometime you will have time to write an article about date values in Access
0
 
LVL 50

Expert Comment

by:Gustav Brock
ID: 39945028
Yes, I've tried a couple of times but too much real work blocks.

/gustav
0
 

Author Closing Comment

by:MonkeyPie
ID: 39946472
Thank you everyone.  Both DateSerial (yy, mm, dd)  and

DateValue(Forms!frmWorkLoadPrint_Option!dtpFrom.Value)

worked.
0
 
LVL 50

Expert Comment

by:Gustav Brock
ID: 39946522
You are welcome!

/gustav
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction The Visual Basic for Applications (VBA) language is at the heart of every application that you write. It is your key to taking Access beyond the world of wizards into a world where anything is possible. This article introduces you to…
In Part II of this series, I will discuss how to identify all open instances of Excel and enumerate the workbooks, spreadsheets, and named ranges within each of those instances.
In Microsoft Access, learn different ways of passing a string value within a string argument. Also learn what a “Type Mis-match” error is about.
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

685 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question