Gustav Brock
gustav at cactus.dk
Sun Feb 8 04:07:17 CST 2004
Hi Kostas
> Hi Gustav,
> In my language we use to say "I have no words to thank you..."
> So, after two years using this access list I have to say that ADDPS is a
> real great help community with no date and time limits.
You are welcome! That is was the list is for.
> Well, may be I couldn't manage to give you the right tips about my question.
> I put your code line by line into a query but it gives back the same
> calculation for all records.
> There is no need to put a filter about the S because I want to know the Q of
> all ID's with the same quantity.
> My table contains records like:
> ID Q PRICE
> 1 10 55,00
> 1 20 72,00
> 1 30 98,00
> 2 10 47,00
> 2 20 60,00
> 2 30 72,00
> 3 10 65,00
> 3 20 77,00
> 3 30 92,00
> ...
> so, I can't use unique index to the fields Station and Quantity.
The index was only meant to prevent duplicate entries as the
combination of Station ID and Quantity must be unique.
> Running the query e.g. for a 25 Q it must answers
> ID Q PRICE
> 1 25 88,30
> 2 25 62,00
> 3 25 92,30
> ...
OK. You can include the expression in a query where it will be run
record by record with the respective Station ID.
Note the correction of Format() to round to one decimal:
<SQL>
PARAMETERS
Q Short;
SELECT DISTINCT
Station,
[Q] AS Quantity,
Format(
Nz(DMax("Price", "tblRate", "Station = " & Station & " And " & Q & " \ Quantity > 0"), 0) +
Nz(DMax("(Price / Quantity) * (" & Q -
Nz(DMax("Quantity", "tblRate", "Station = " & Station & " And Quantity <= " & Q & ""), 0)
& ")", "tblRate", "Station = " & Station & " And Quantity > " & Q & ""), 0),
"0.0" & "\0") AS Total
FROM
tblRate;
</SQL>
Copy and paste this into a new query and adjust to your naming of
fields etc.
However, if this - to build a list - is the purpose, and the DMax()
exercise hadn't be done or your count of stations were 1900 and not
19, I would suggest to follow the approach of Drew and build a query
and calculate in SQL, though - with the needed in-line or sub select
queries - it wouldn't be much nicer to watch.
/gustav
> --- Original Message -----
> From: "Gustav Brock" <gustav at cactus.dk>
> To: "Access Developers discussion and problem solving"
> <accessd at databaseadvisors.com>
> Sent: Saturday, February 07, 2004 10:08 PM
> Subject: Re: [AccessD] Something too hard for me...
>> Hi Kostas
>>
>> > Hi Gustav,
>> > thank's a lot for your really excellent job.
>> > It works perfect but I have another question which is very critical.
>>
>> > we are a network of 19 Regional Greek Stations so the general advertising
>> > list incloudes common Quantities but different prices for every of them.
>> > Every Station based on its ID (from 1 to 19)
>> > I tried to put your code on but it conficts with good reason cause the same
>> > quantities are iclouding several times
>> > Michael and Drew Many thank's for your time too
>>
>> > Be well
>>
>>
>> This is possible and still fun but before being slammed by my fellow
>> listers, let me note that we are approaching the land of unreadable
>> code. Nevertheless:
>>
>> curTotal = Nz(DMax("Price", "tblRate", "Station = " & S & " And " & Q & "
>> \ Quantity >> 0"), 0) + Nz(DMax("(Price / Quantity) * (" & Q -
>> Nz(DMax("Quantity", "tblRate", "Station = " & S & " And Quantity <= " & Q &
>> ""), 0) & ")", "tblRate", "Station = " & S & " And Quantity > " & Q & ""),
>> 0)
>>
>> In addition to the inclusion of a Station ID, please note a minor
>> correction (<=).
>>
>> Your table should now as minimum read:
>>
>> Station: Integer
>> Quantity: Integer
>> Price: Currency
>>
>> A unique index should be applied to the fields Station and Quantity.
>> Also, you may need to round the total:
>>
>> curTotal = Format(Nz(DMax("Price", "tblRate", "Station = " & S & " And " &
>> Q & " \ Quantity >> 0"), 0) + Nz(DMax("(Price / Quantity) * (" & Q -
>> Nz(DMax("Quantity", "tblRate", "Station = " & S & " And Quantity <= " & Q &
>> ""), 0) & ")", "tblRate", "Station = " & S & " And Quantity > " & Q & ""),
>> 0), "Standard")
>>
>> /gustav
>>
>>
>> > ----- Original Message -----
>> > From: "Gustav Brock" <gustav at cactus.dk>
>> > To: "Access Developers discussion and problem solving"
>> > <accessd at databaseadvisors.com>
>> > Sent: Saturday, February 07, 2004 2:56 PM
>> > Subject: Re: [AccessD] Something too hard for me...
>>
>>
>> >> Hi Kostas
>> >>
>> >> > I am trying to create a little project to calculate some prices of a Radio
>> >> > Station advertising list
>> >> > In a table I keep CATEGORY and PRICE e.g.
>> >>
>> >> 10 -->> 55,00EURO
>> >> 20 -->> 80,00
>> >> 30 -->> 90,00
>> >> > bla, bla
>> >>
>> >> > What I want to calculate is the price of an uncategorized spots between two
>> >> > categories.
>> >> > 25 SPOTS....
>> >> > The calculation is:
>> >> > A) the 20 spots cost 80,00
>> >> > B) I have to select the next category (in that case 30) to find out how much
>> >> > cost one spot (90,00/30 = 3,00EURO)
>> >> > C). the 5 spots cost 5X3,00=15,00
>> >> > so, the total price for the uncategorized query must be
>> >> > 80,00+15,00=95,00euro
>> >>
>> >>
>> >> You can, as an exercise in DMax(), do this with a single line of code
>> >> where Q is your number of spots:
>> >>
>> >> curTotal = Nz(DMax("Price", "tblRate", "" & Q & " \ Quantity > 0"), 0) +
>> >> Nz(DMax("(Price / Quantity) * (" & Q - Nz(DMax("Quantity", "tblRate",
>> >> "Quantity < " & Q & ""), 0) & ")", "tblRate", "Quantity > " & Q & ""),> 0)
>> >>
>> >> The limitation is that your rate table must include an entry equal to
>> >> or exceeding the largest possible quantity of spots for a single
>> >> order.
>> >>
>> >> Have fun!