DateDiff with variable criteria?

J

Jim

I have a query field that uses DateDiff("d",[dtmDateShipped],[dtmDatePaid])
to calculate the difference between a ship date and paid date. I also have
<=50 in the criteria row to restrict payments to 50 days or less.



I need to change the criteria to <=80 for a couple customers. I've tried
using IIf([tblCustomerUS.strCustomerId] In ("LE4212","AM0303"),<=80,<=50) in
the criteria row as a sub query, but I get no results at all. Any
suggestions on how to set this up correctly?

Thanks



Jim
 
V

vanderghast

Try:


<= IIf([tblCustomerUS.strCustomerId] In ("LE4212","AM0303"),80,50)


since the goal of iif is about returning a constant, not about returning a "
part of " a test.

Vanderghast, Access MVP
 
J

Jim

This is a report for sales commissions. I do have a field that has payment
terms in it. 99% of our customers have 30 day terms or less, a couple have
terms of 60 days. I'm calculating the difference between the date product
shipped (dtmDateShipped) and the date the invoice is paid (dtmPaidDate) plus
20 days. If the time difference is 50 days or less, it shows up on the
commission statement; if it's over, it doesn't. But I needed a way to take
into account the longer terms of a couple customers. How would I do that
with the date field instead of the way I'm doing it now?
Thanks

Jim

Marshall Barton said:
Jim said:
I have a query field that uses
DateDiff("d",[dtmDateShipped],[dtmDatePaid])
to calculate the difference between a ship date and paid date. I also have
<=50 in the criteria row to restrict payments to 50 days or less.

I need to change the criteria to <=80 for a couple customers. I've tried
using IIf([tblCustomerUS.strCustomerId] In ("LE4212","AM0303"),<=80,<=50)
in
the criteria row as a sub query, but I get no results at all. Any
suggestions on how to set this up correctly?

You can not put a partial expression in IIf. In this case
you can simply rearrange the criteria:
<=IIf([tblCustomerUS.strCustomerId] In
("LE4212","AM0303"),80,50)

Personally, I would add a field (named PayTerm) to the
customer table to so the terms of payment can be included
without specifying specific customers:
<= tblCustomerUS.PayTerm
 
J

Jim

Thanks.


Marshall Barton said:
Just cahnge your DateDiff calculated field's criteria to:
<= tblCustomerUS.PayTerm + 20

Then you would not need to check for those specific
customers. It's almost always best to use data from a table
instead of typing values in a query. The way you had it,
think about the code/queries you would have to change if you
should ever need to change/correct a customer's name or
change the terms of other customers to 60 days. With the
above criteria, you would not have to anything beyond
changing a name or terms value in the customer's record.
--
Marsh
MVP [MS Access]

This is a report for sales commissions. I do have a field that has payment
terms in it. 99% of our customers have 30 day terms or less, a couple have
terms of 60 days. I'm calculating the difference between the date product
shipped (dtmDateShipped) and the date the invoice is paid (dtmPaidDate)
plus
20 days. If the time difference is 50 days or less, it shows up on the
commission statement; if it's over, it doesn't. But I needed a way to take
into account the longer terms of a couple customers. How would I do that
with the date field instead of the way I'm doing it now?

Jim wrote:
I have a query field that uses
DateDiff("d",[dtmDateShipped],[dtmDatePaid])
to calculate the difference between a ship date and paid date. I also
have
<=50 in the criteria row to restrict payments to 50 days or less.

I need to change the criteria to <=80 for a couple customers. I've tried
using IIf([tblCustomerUS.strCustomerId] In
("LE4212","AM0303"),<=80,<=50)
in
the criteria row as a sub query, but I get no results at all. Any
suggestions on how to set this up correctly?


You can not put a partial expression in IIf. In this case
you can simply rearrange the criteria:
<=IIf([tblCustomerUS.strCustomerId] In
("LE4212","AM0303"),80,50)

Personally, I would add a field (named PayTerm) to the
customer table to so the terms of payment can be included
without specifying specific customers:
<= tblCustomerUS.PayTerm
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top