If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
|
Thread Tools | Display Modes |
#11
|
|||
|
|||
Getting a total control to find totals for last 7 days via a q
My simple idea of using a Mac text box won't work in a form.
It's tricky to calculate an aggregate of aggregate values so for the best/worst week, I am now thinking of queries like: SELECT TOP 1 DateDiff("ww",[TestDate],Date()) As WeeksPassed, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY DateDiff("ww",[TestDate],Date()) ORDER BY Sum(Tempscore) DESC Then a simple subform bound to that query can be used to display all of the best weeks data. A similar query/subform can be used for the best/worst days of the week: SELECT TOP 1 Format([TestDate], "dddd") As WeekDays, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY Format([TestDate], "dddd") ORDER BY Sum(Tempscore) DESC -- Marsh MVP [MS Access] efandango wrote: Another day, another revelation... yep, you're right; it doesn't work. (hubris, eh...) Can you explain to me some more about what you had in mind, when you say "Using DateDiff is probably sufficient, but you need to drop the testdate field to get a total for a week. Then the report text box can use the Max function to display the best week". I'm not familiar with the syntax for date diff (though i understand the concept of it) or where to use it. Also, if i drop the testdate field, how do reference it to the form, and how do also reference the (max) best week if I have no testdate? regards, the last two criteria, when you say subreports, do you mean Subforms? (i'm not planning on using reports, as they will potentially be out of date, every day) "Marshall Barton" wrote: I don't think that will do what you want. Grouping on each date and on a week doesn't make sense to me. Using DateDiff is probably sufficient, but you need to drop the testdate field to get a total for a week. Then the report text box can use the Max function to display the best week. A different query will be needed that groups on Format(TestDate, "dddd"). I suggest that you use subreports to display the results of these other two queries. efandango wrote: I (think) I have mananged to get 'D' out of the same query, I used this: WeeksPassed: DateDiff("ww",[TestDate],Date()) to get the weeks from 'today' which seems to (my astonishment!) work would you kindly take a look at my SQL, and tell me if i'm right?, and if so, how would i translate that into an unbound control on my form? [snip bad SQL] "Marshall Barton" wrote: Yes. A, B and C can be done with the same kind of expression. For D, E and F type of calculations, I think you probably will need other queries that group on the week, month or day of week. efandango wrote: Thanks for that, it worked a treat!, this means I can use other (copies) unbound controls on the same form to query for different date ranges, right? this is ultimatelt what I want to do: (its pasted from another post that I made earlier, but as you seemed to have answered my fundamental question, perhaps its appropriate to re-paste here. ******************** I want to create an all-purpose (dashboard) form that will give me the information in the Form example below. Can someone give me some ideas/pointers as to the best way of achieving this, what would be the best approach. Should I use: Single form (can it have multiple queries?) Various subforms (with separate queries?) Can I use one master query to serve these various requirements, if so, would I put the criteria, etc on the form itself? If so, where would that go? I think I can deal with the criteria for A, B C. but what would I use for D, E, F.? The Form: (the A,B,C’s are just for reference) A. This week (total 7 Days) Points Correct Points Incorrect Total Answered B. Previous Week (total 7 Days) Points Correct Points Incorrect Total Answered C. Month Ago (total 4 weeks) Points Correct Points Incorrect Total Answered D. Best week to date: 03/05/06 Points Correct Points Incorrect Total Answered E. Best Days: Tuesdays F. Worst Days: Fridays Sample Data (it extends back to 12 months) TestDate AllAnswers Correct Wrong P% Correct P%Wrong 01/10/2006 13 7 6 53.85% 46.15% 02/10/2006 13 7 6 53.85% 46.15% 03/10/2006 16 6 10 37.50% 62.50% 04/10/2006 16 14 2 87.50% 12.50% This is my SQL: SELECT tbl_Scores_Running_Totals.TestDate, Count(*) AS AllAnswers, Sum(tbl_Scores_Running_Totals.Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY tbl_Scores_Running_Totals.TestDate ORDER BY tbl_Scores_Running_Totals.TestDate DESC, Count(*) DESC, Sum(tbl_Scores_Running_Totals.Tempscore) DESC, Abs(Sum([TempScore]=0)) DESC I want to ideally cut down on the number of queries/forms (my db is suffering from objects density, and its getting messier by the day…) |
#12
|
|||
|
|||
Getting a total control to find totals for last 7 days via a q
Hi Marshall,
Is there a certain way i should use the SQL you supplied, it seems to be offset in two halfs on your post, i tried to paste it in 'as is', but it just throws errors. regards Eric "Marshall Barton" wrote: My simple idea of using a Mac text box won't work in a form. It's tricky to calculate an aggregate of aggregate values so for the best/worst week, I am now thinking of queries like: SELECT TOP 1 DateDiff("ww",[TestDate],Date()) As WeeksPassed, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY DateDiff("ww",[TestDate],Date()) ORDER BY Sum(Tempscore) DESC Then a simple subform bound to that query can be used to display all of the best weeks data. A similar query/subform can be used for the best/worst days of the week: SELECT TOP 1 Format([TestDate], "dddd") As WeekDays, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY Format([TestDate], "dddd") ORDER BY Sum(Tempscore) DESC -- Marsh MVP [MS Access] efandango wrote: Another day, another revelation... yep, you're right; it doesn't work. (hubris, eh...) Can you explain to me some more about what you had in mind, when you say "Using DateDiff is probably sufficient, but you need to drop the testdate field to get a total for a week. Then the report text box can use the Max function to display the best week". I'm not familiar with the syntax for date diff (though i understand the concept of it) or where to use it. Also, if i drop the testdate field, how do reference it to the form, and how do also reference the (max) best week if I have no testdate? regards, the last two criteria, when you say subreports, do you mean Subforms? (i'm not planning on using reports, as they will potentially be out of date, every day) "Marshall Barton" wrote: I don't think that will do what you want. Grouping on each date and on a week doesn't make sense to me. Using DateDiff is probably sufficient, but you need to drop the testdate field to get a total for a week. Then the report text box can use the Max function to display the best week. A different query will be needed that groups on Format(TestDate, "dddd"). I suggest that you use subreports to display the results of these other two queries. efandango wrote: I (think) I have mananged to get 'D' out of the same query, I used this: WeeksPassed: DateDiff("ww",[TestDate],Date()) to get the weeks from 'today' which seems to (my astonishment!) work would you kindly take a look at my SQL, and tell me if i'm right?, and if so, how would i translate that into an unbound control on my form? [snip bad SQL] "Marshall Barton" wrote: Yes. A, B and C can be done with the same kind of expression. For D, E and F type of calculations, I think you probably will need other queries that group on the week, month or day of week. efandango wrote: Thanks for that, it worked a treat!, this means I can use other (copies) unbound controls on the same form to query for different date ranges, right? this is ultimatelt what I want to do: (its pasted from another post that I made earlier, but as you seemed to have answered my fundamental question, perhaps its appropriate to re-paste here. ******************** I want to create an all-purpose (dashboard) form that will give me the information in the Form example below. Can someone give me some ideas/pointers as to the best way of achieving this, what would be the best approach. Should I use: Single form (can it have multiple queries?) Various subforms (with separate queries?) Can I use one master query to serve these various requirements, if so, would I put the criteria, etc on the form itself? If so, where would that go? I think I can deal with the criteria for A, B C. but what would I use for D, E, F.? The Form: (the A,B,C’s are just for reference) A. This week (total 7 Days) Points Correct Points Incorrect Total Answered B. Previous Week (total 7 Days) Points Correct Points Incorrect Total Answered C. Month Ago (total 4 weeks) Points Correct Points Incorrect Total Answered D. Best week to date: 03/05/06 Points Correct Points Incorrect Total Answered E. Best Days: Tuesdays F. Worst Days: Fridays Sample Data (it extends back to 12 months) TestDate AllAnswers Correct Wrong P% Correct P%Wrong 01/10/2006 13 7 6 53.85% 46.15% 02/10/2006 13 7 6 53.85% 46.15% 03/10/2006 16 6 10 37.50% 62.50% 04/10/2006 16 14 2 87.50% 12.50% This is my SQL: SELECT tbl_Scores_Running_Totals.TestDate, Count(*) AS AllAnswers, Sum(tbl_Scores_Running_Totals.Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY tbl_Scores_Running_Totals.TestDate ORDER BY tbl_Scores_Running_Totals.TestDate DESC, Count(*) DESC, Sum(tbl_Scores_Running_Totals.Tempscore) DESC, Abs(Sum([TempScore]=0)) DESC I want to ideally cut down on the number of queries/forms (my db is suffering from objects density, and its getting messier by the day…) |
#13
|
|||
|
|||
Getting a total control to find totals for last 7 days via a q
I'm not sure what you mean by "offset in two halfs" no what
kind of errors you saw, but there are two separate queries one for the best week and the other for the best day of week. You will want another two very similarqueries for the worst week and one for the worst day of week (just change the DESC to ASC). This is adding up to a lot of queries, but as I said before, calculating aggregates of aggregates is tricky. -- Marsh MVP [MS Access] efandango wrote: Is there a certain way i should use the SQL you supplied, it seems to be offset in two halfs on your post, i tried to paste it in 'as is', but it just throws errors. "Marshall Barton" wrote: My simple idea of using a Mac text box won't work in a form. It's tricky to calculate an aggregate of aggregate values so for the best/worst week, I am now thinking of queries like: SELECT TOP 1 DateDiff("ww",[TestDate],Date()) As WeeksPassed, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY DateDiff("ww",[TestDate],Date()) ORDER BY Sum(Tempscore) DESC Then a simple subform bound to that query can be used to display all of the best weeks data. A similar query/subform can be used for the best/worst days of the week: SELECT TOP 1 Format([TestDate], "dddd") As WeekDays, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY Format([TestDate], "dddd") ORDER BY Sum(Tempscore) DESC |
#14
|
|||
|
|||
Getting a total control to find totals for last 7 days via a q
Thanks Marshall,
I was referring to the layout in your post. It looks like this: SELECT TOP 1 Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, I wasn't sure if it is just an interface error, but if i try an cut n paste it, i just get errors in the SQL. not a major issue though, as i will put it into the QBE manually. Going back to your SQL though, the funny thing is, your SQL is exactly what I have, at the moment, but without the need to Specify Top 1. which means that I am going back to saying that I can have that on the same form as the original A,B,C... Anyway, I now have your clear instructions, which is 4 seperate queries, right?. I would love to email you a small cutdown version of the db with just the tables and queries in question for you to see what i mean, would you be interested? "Marshall Barton" wrote: I'm not sure what you mean by "offset in two halfs" no what kind of errors you saw, but there are two separate queries one for the best week and the other for the best day of week. You will want another two very similarqueries for the worst week and one for the worst day of week (just change the DESC to ASC). This is adding up to a lot of queries, but as I said before, calculating aggregates of aggregates is tricky. -- Marsh MVP [MS Access] efandango wrote: Is there a certain way i should use the SQL you supplied, it seems to be offset in two halfs on your post, i tried to paste it in 'as is', but it just throws errors. "Marshall Barton" wrote: My simple idea of using a Mac text box won't work in a form. It's tricky to calculate an aggregate of aggregate values so for the best/worst week, I am now thinking of queries like: SELECT TOP 1 DateDiff("ww",[TestDate],Date()) As WeeksPassed, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY DateDiff("ww",[TestDate],Date()) ORDER BY Sum(Tempscore) DESC Then a simple subform bound to that query can be used to display all of the best weeks data. A similar query/subform can be used for the best/worst days of the week: SELECT TOP 1 Format([TestDate], "dddd") As WeekDays, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY Format([TestDate], "dddd") ORDER BY Sum(Tempscore) DESC |
#15
|
|||
|
|||
Getting a total control to find totals for last 7 days via a q
Hi Marshall,
Well… The good news is that both those queries do the job as you said they would, I have been playing around with the ‘weekday’ version and found that If I use the ‘Top #’ value, then it works ok. But if I say ‘ALL’ instead, it places ‘Tbl_Scores_Running_Totals.TestDate DESC’ into the ‘Order By’ property in the Form’s properties section., which will then make the query sort by the Testdate, and throw up the incorrect day; namely ‘today’s date’. No great shakes, but thought you may be interested to know that it doesn’t seem dependent on using the ‘Top # value’ s so long as the ‘Order By’ Property is blank. This is essentially taking me back to my medium term posts where I was declaring it working, and then deciding it wasn’t. I’m beginning to understand why that was a moving target. Here’s a perhaps silly question, but given that both forms ‘Best Week’ and ‘Best Days’ work from essentially identical queries, and both forms are able to display my A,B,C requirements also; why can’t I just use some kind of ‘filter’ specific to each dialogue box on one form?. It would be nice to be able to cut down on so many queries, and learn some more about using controls to filter query’s. Or am I simply driving the wrong way? One final thing, you kindly provided the syntax for getting the last week’s figures. Which was: =Sum(IIf(TestDate = Date()-7, Correct, 0) But if I wanted to get inclusive dates between one range and another, what code would I use? I tried: =Sum(IIf([TestDate] Between =Date()-7 And =Date()-14,[Correct],0)) But it kept telling me I had maybe entered a comma without a preceding value or identifier. I tried removing and moving around various commas, but to no avail. Regards Eric "Marshall Barton" wrote: I'm not sure what you mean by "offset in two halfs" no what kind of errors you saw, but there are two separate queries one for the best week and the other for the best day of week. You will want another two very similarqueries for the worst week and one for the worst day of week (just change the DESC to ASC). This is adding up to a lot of queries, but as I said before, calculating aggregates of aggregates is tricky. -- Marsh MVP [MS Access] efandango wrote: Is there a certain way i should use the SQL you supplied, it seems to be offset in two halfs on your post, i tried to paste it in 'as is', but it just throws errors. "Marshall Barton" wrote: My simple idea of using a Mac text box won't work in a form. It's tricky to calculate an aggregate of aggregate values so for the best/worst week, I am now thinking of queries like: SELECT TOP 1 DateDiff("ww",[TestDate],Date()) As WeeksPassed, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY DateDiff("ww",[TestDate],Date()) ORDER BY Sum(Tempscore) DESC Then a simple subform bound to that query can be used to display all of the best weeks data. A similar query/subform can be used for the best/worst days of the week: SELECT TOP 1 Format([TestDate], "dddd") As WeekDays, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY Format([TestDate], "dddd") ORDER BY Sum(Tempscore) DESC |
#16
|
|||
|
|||
Getting a total control to find totals for last 7 days via a q
You can not use TOP without a specific Order By clause
because the sort order determines how to select the top value. What is this "ALL" thing you tossed into the fray??? The ‘Best Week’ and ‘Best Days’ queries have the same structure, BUT they are definitely not identical in any way. They calculate different results based on a different grouping. This is way beyond any kind of filtering. I tried to explain using Between before and that you can not mix comparison operators link that. Review my first reply yesterday. -- Marsh MVP [MS Access] efandango wrote: The good news is that both those queries do the job as you said they would, I have been playing around with the ‘weekday’ version and found that If I use the ‘Top #’ value, then it works ok. But if I say ‘ALL’ instead, it places ‘Tbl_Scores_Running_Totals.TestDate DESC’ into the ‘Order By’ property in the Form’s properties section., which will then make the query sort by the Testdate, and throw up the incorrect day; namely ‘today’s date’. No great shakes, but thought you may be interested to know that it doesn’t seem dependent on using the ‘Top # value’ s so long as the ‘Order By’ Property is blank. This is essentially taking me back to my medium term posts where I was declaring it working, and then deciding it wasn’t. I’m beginning to understand why that was a moving target. Here’s a perhaps silly question, but given that both forms ‘Best Week’ and ‘Best Days’ work from essentially identical queries, and both forms are able to display my A,B,C requirements also; why can’t I just use some kind of ‘filter’ specific to each dialogue box on one form?. It would be nice to be able to cut down on so many queries, and learn some more about using controls to filter query’s. Or am I simply driving the wrong way? One final thing, you kindly provided the syntax for getting the last week’s figures. Which was: =Sum(IIf(TestDate = Date()-7, Correct, 0) But if I wanted to get inclusive dates between one range and another, what code would I use? I tried: =Sum(IIf([TestDate] Between =Date()-7 And =Date()-14,[Correct],0)) But it kept telling me I had maybe entered a comma without a preceding value or identifier. I tried removing and moving around various commas, but to no avail. "Marshall Barton" wrote: I'm not sure what you mean by "offset in two halfs" no what kind of errors you saw, but there are two separate queries one for the best week and the other for the best day of week. You will want another two very similarqueries for the worst week and one for the worst day of week (just change the DESC to ASC). This is adding up to a lot of queries, but as I said before, calculating aggregates of aggregates is tricky. efandango wrote: Is there a certain way i should use the SQL you supplied, it seems to be offset in two halfs on your post, i tried to paste it in 'as is', but it just throws errors. "Marshall Barton" wrote: My simple idea of using a Mac text box won't work in a form. It's tricky to calculate an aggregate of aggregate values so for the best/worst week, I am now thinking of queries like: SELECT TOP 1 DateDiff("ww",[TestDate],Date()) As WeeksPassed, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY DateDiff("ww",[TestDate],Date()) ORDER BY Sum(Tempscore) DESC Then a simple subform bound to that query can be used to display all of the best weeks data. A similar query/subform can be used for the best/worst days of the week: SELECT TOP 1 Format([TestDate], "dddd") As WeekDays, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY Format([TestDate], "dddd") ORDER BY Sum(Tempscore) DESC |
#17
|
|||
|
|||
Getting a total control to find totals for last 7 days via a q
efandango wrote:
I was referring to the layout in your post. It looks like this: SELECT TOP 1 Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, I wasn't sure if it is just an interface error, but if i try an cut n paste it, i just get errors in the SQL. not a major issue though, as i will put it into the QBE manually. Going back to your SQL though, the funny thing is, your SQL is exactly what I have, at the moment, but without the need to Specify Top 1. which means that I am going back to saying that I can have that on the same form as the original A,B,C... That does look awful. I use the tab key to indent lines, but if you email program's tab key setting is much larger than mine, you'll see that kind of thing. If you're viewing posts on a web interface instead of a mail reader, you probably can't do anything about it. -- Marsh MVP [MS Access] |
#18
|
|||
|
|||
Getting a total control to find totals for last 7 days via a q
Hi Marshall,
OK, I understand the TOP concept and its intrinsic requirement now. I also, understand the difference between 'Best days' and Best Week' and why they require seperate queries. The 'All' thing was to some extent, aberational on my part, and partly brought on by my 'tunnel vision & Query fatigue', i need to go a few steps back and re-evelaute what I am trying to achieve here, because I have taken my eye off the ball, I have overlooked the fact that I have been misintepreting what I see in my form as 'Best week', which is probably why i have been confusing (and likely frustrating) you. I am seeing the best week form coming back and denoting a 'best week' using just one date which is why I can claim to find that 'type' of best week from the same query that will give the 'best day'; as they are essentially the same thing. Whereas, you have likely not been hearing sense from me against your own reasoning in that regard, as you have quite rightly had the correct notion of what constitutes a best week, and specifically how to query for it. Does that make sense? My Apologies for requesting help on the 7 14 days control, i simply didn't notice that reply previously, as i tend to focus on the bottom of the tree for your latest post. Kind regards Eric "Marshall Barton" wrote: You can not use TOP without a specific Order By clause because the sort order determines how to select the top value. What is this "ALL" thing you tossed into the fray??? The ‘Best Week’ and ‘Best Days’ queries have the same structure, BUT they are definitely not identical in any way. They calculate different results based on a different grouping. This is way beyond any kind of filtering. I tried to explain using Between before and that you can not mix comparison operators link that. Review my first reply yesterday. -- Marsh MVP [MS Access] efandango wrote: The good news is that both those queries do the job as you said they would, I have been playing around with the ‘weekday’ version and found that If I use the ‘Top #’ value, then it works ok. But if I say ‘ALL’ instead, it places ‘Tbl_Scores_Running_Totals.TestDate DESC’ into the ‘Order By’ property in the Form’s properties section., which will then make the query sort by the Testdate, and throw up the incorrect day; namely ‘today’s date’. No great shakes, but thought you may be interested to know that it doesn’t seem dependent on using the ‘Top # value’ s so long as the ‘Order By’ Property is blank. This is essentially taking me back to my medium term posts where I was declaring it working, and then deciding it wasn’t. I’m beginning to understand why that was a moving target. Here’s a perhaps silly question, but given that both forms ‘Best Week’ and ‘Best Days’ work from essentially identical queries, and both forms are able to display my A,B,C requirements also; why can’t I just use some kind of ‘filter’ specific to each dialogue box on one form?. It would be nice to be able to cut down on so many queries, and learn some more about using controls to filter query’s. Or am I simply driving the wrong way? One final thing, you kindly provided the syntax for getting the last week’s figures. Which was: =Sum(IIf(TestDate = Date()-7, Correct, 0) But if I wanted to get inclusive dates between one range and another, what code would I use? I tried: =Sum(IIf([TestDate] Between =Date()-7 And =Date()-14,[Correct],0)) But it kept telling me I had maybe entered a comma without a preceding value or identifier. I tried removing and moving around various commas, but to no avail. "Marshall Barton" wrote: I'm not sure what you mean by "offset in two halfs" no what kind of errors you saw, but there are two separate queries one for the best week and the other for the best day of week. You will want another two very similarqueries for the worst week and one for the worst day of week (just change the DESC to ASC). This is adding up to a lot of queries, but as I said before, calculating aggregates of aggregates is tricky. efandango wrote: Is there a certain way i should use the SQL you supplied, it seems to be offset in two halfs on your post, i tried to paste it in 'as is', but it just throws errors. "Marshall Barton" wrote: My simple idea of using a Mac text box won't work in a form. It's tricky to calculate an aggregate of aggregate values so for the best/worst week, I am now thinking of queries like: SELECT TOP 1 DateDiff("ww",[TestDate],Date()) As WeeksPassed, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY DateDiff("ww",[TestDate],Date()) ORDER BY Sum(Tempscore) DESC Then a simple subform bound to that query can be used to display all of the best weeks data. A similar query/subform can be used for the best/worst days of the week: SELECT TOP 1 Format([TestDate], "dddd") As WeekDays, Count(*) AS AllAnswers, Sum(Tempscore) AS Correct, Abs(Sum([TempScore]=0)) AS Wrong, [Correct]/[AllAnswers] AS PercentCorrect, [Wrong]/[AllAnswers] AS PercentWrong FROM tbl_Scores_Running_Totals GROUP BY Format([TestDate], "dddd") ORDER BY Sum(Tempscore) DESC |
#19
|
|||
|
|||
Getting a total control to find totals for last 7 days via a q
efandango wrote:
OK, I understand the TOP concept and its intrinsic requirement now. I also, understand the difference between 'Best days' and Best Week' and why they require seperate queries. The 'All' thing was to some extent, aberational on my part, and partly brought on by my 'tunnel vision & Query fatigue', i need to go a few steps back and re-evelaute what I am trying to achieve here, because I have taken my eye off the ball, I have overlooked the fact that I have been misintepreting what I see in my form as 'Best week', which is probably why i have been confusing (and likely frustrating) you. I am seeing the best week form coming back and denoting a 'best week' using just one date which is why I can claim to find that 'type' of best week from the same query that will give the 'best day'; as they are essentially the same thing. Whereas, you have likely not been hearing sense from me against your own reasoning in that regard, as you have quite rightly had the correct notion of what constitutes a best week, and specifically how to query for it. Does that make sense? My Apologies for requesting help on the 7 14 days control, i simply didn't notice that reply previously, as i tend to focus on the bottom of the tree for your latest post. I'm not sure what makes sense anymore. Whatever it is, ut seems to depend on my mood and the phase of the moon ;-) Taking a little time to regroup while you plan your next attack is probably a good idea. When your ready to jump back into the fray, we'll be here to back you up ;-) -- Marsh MVP [MS Access] |
|
Thread Tools | |
Display Modes | |
|
|