Solved

Access report source with date range

Posted on 2014-03-20
8
545 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 39

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
Three Reasons Why Backup is Strategic

Backup is strategic to your business because your data is strategic to your business. Without backup, your business will fail. This white paper explains why it is vital for you to design and immediately execute a backup strategy to protect 100 percent of your data.

 
LVL 49

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 39

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 49

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 49

Expert Comment

by:Gustav Brock
ID: 39946522
You are welcome!

/gustav
0

Featured Post

Three Reasons Why Backup is Strategic

Backup is strategic to your business because your data is strategic to your business. Without backup, your business will fail. This white paper explains why it is vital for you to design and immediately execute a backup strategy to protect 100 percent of your data.

Question has a verified solution.

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

As tax season makes its return, so does the increase in cyber crime and tax refund phishing that comes with it
Preparing an email is something we should all take special care with – especially when the email is for somebody you may not know very well. The pressures of everyday working life stacked with a hectic office environment can make this a real challen…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
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.

776 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