Mar 9 2006, 08:42 AM
There are 2 tables - Contracts and Payment Schedule.
Contracts stores contract level information per leasing contract.
Payment Schedule stores payment dates and amounts for leasing contracts. Some contracts have multiple payment amounts and payment dates - but usually a maximum of around 3.
What I need to do is extract out Contract Level information and then add in ONLY the next payment date and amount from the Payment Schedule table. I was thinking that somehow maybe I could write an Expression in my query that would give me MAX payment date IF payment date was less than say TODAY() or a given date.
Does anyone know how that can be written in Access as an Expression?
Contract No. 333.
If I extract ALL data from Payment Schedule table, I get:-
Contract No. Payment Date....... Payment Amount
So, at the moment, I'm getting duplicate contract numbers and ALL 3 payments. I just want the payment date and amount for the oldest payment date prior to todays date. Does that make sense?
Any help appreciated ....... as always :-)
Mar 9 2006, 08:55 AM
I think your table structures might be incorrect so you might want to post them so we can verify that you are on the right track. BUT...have a look at the dmax function! Examples here
Mar 9 2006, 09:11 AM
Do you want the oldest payment date as you state, or the latest payment date as you imply?
Mar 9 2006, 09:17 AM
Syntax for DMAX is:-
DMax(expr, domain, [criteria])
So ....... do I understand from this that:-
expr = Payment_Date ........... data field
domain= PAYMENT_SCHEDULE ........ table
criteria = < todays date?
IF yes, would my expression be:-
Unfortunately I've just tried that and it did not work and its prompting me for a value for the PAYMENT_SCHEDULE parameter.
Mar 9 2006, 09:23 AM
I'd like the oldest payment date and the corresponding payment value IF payment date is less than todays date.
Mar 9 2006, 10:29 AM
Out of curiosity, by definition, "Today" is the oldest date. Why test for that particular condition? It seems redundant.
Mar 9 2006, 10:49 AM
Actually, I'm thinking that oldest date means earliest date, latest date means today's date.
Mar 9 2006, 11:08 AM
In the example below, there are 3 payment dates in the Payments Scheduled Table.
Let me explain this further. This is a leasing contract. On 1st Jan 04, customer pays £350 per month. Customer continues to pay this amount until 02/05/05 when the payment amount that he needs to pay changes to £500. Customer continues to pay £500 until the 28th February 2007 when the payment amount changes to £800.
I want to extract out the next payment amount that the customer will pay on the contract. So.... I thought if I could ask Access to look at all the payments in the Payments Scheduled Table and give me the maximum date and value BUT only if the date is less than todays date. So using this criteria, it would return me the following from the above example:-
Reason is that this is the maximum date that is less than 09/03/06 and this is the value that relates to that date.
Does that make sense? Alternatively can you think of another way?
Mar 9 2006, 02:33 PM
I would probably do it like this:
QueryA would fetch all the payment dates less than today's date.
QueryB would be a Group By query that would use QueryA as its "table"
I would group by on customerID, Max on date.
If you needed more fields from the table, join this query back to the table on the customerID to CustomerID and MaxDate to Date fields.
I have attached an example. See Query12, Query13, Query14.
Edited by: fkegley on Thu Mar 9 14:33:56 EST 2006.
Edited by: fkegley on Thu Mar 9 15:07:13 EST 2006.
Edited by: fkegley on Thu Mar 9 15:07:49 EST 2006.
Mar 10 2006, 05:58 AM
Excellent ....... thanks again Frank. I'll try to replicate what you've achieved. :-)
Mar 10 2006, 10:02 AM
You're welcome. I am glad I could help.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here