Avatar billede hugopedersen Nybegynder
18. januar 2005 - 12:28 Der er 15 kommentarer og
1 løsning

Summering på grupper på rapport

Jeg har lavet mig en rapport hvor der grupperes på et afdelingsnummer. Der er så en header og en footer på denne gruppe og i footeren vil jeg så summere på et par af felterne. Det gør jeg f.eks. ved at sætte control source til =Sum([fldPriceTotal]) på det ene felt.
Det virker sådan set også meget fint, men...
Når jeg så vil filtrere på datane ved f.eks. kun at medtage data fra 17-01-2005, så viser rapporten meget fint kun de udvalgte data, men gruppesumeringen passer overhovedet ikke. Den kører stadig på alle records i tabellen.
Hvis jeg sætter datoen ind som kriterie i mit view, så passer det godt nok.

Hvad i alverden er det jeg overser her ?
Avatar billede terry Ekspert
18. januar 2005 - 12:35 #1
Hi Hugo
The sum function can also take parameters and because you dont give it any it does what you ask, returns the sum of fldPriceTotal (all)

So you could have a date field on the form and get you Sun function to use the date field, or even better, build the SQL for the report dynamically
Avatar billede hugopedersen Nybegynder
18. januar 2005 - 12:40 #2
OK - give me just a minute to check that
18. januar 2005 - 12:43 #3
Terry->"The sum function can also take parameters"!
Det har jeg da aldrig set (heller ikke, når jeg slår op i hjælpen)

Kan du give et konkret eksempel?

=Sum([fldPriceTotal];???)
Avatar billede terry Ekspert
18. januar 2005 - 12:43 #4
How are you setting the filter?
If you open the repeort using for example.
DoCmd.OpenReport stDocName, acPreview, , "ID = 1"

then your filter should work and you should only get the sum for the one record
Avatar billede terry Ekspert
18. januar 2005 - 12:45 #5
I think thats my mistake! I'm obviosuly getting mixed up with dsum, sorry Hugo!
Avatar billede terry Ekspert
18. januar 2005 - 12:55 #6
have you tried using the wizard for adding sum fields to your report? If you group on one or more fields the get an extra button "Summary options" which allows you to choose fields you want to sum on
Avatar billede hugopedersen Nybegynder
18. januar 2005 - 13:27 #7
For some reason I have always had trouble getting some wizards to run when I am working on an .adp database as this one is.

I am buildig the filter on a form (  fldOrderDate = ' & me.cboDate & "'" ) and applying this to the report on its OnOpen event. And it works just fine except for the sum :-)
Avatar billede terry Ekspert
18. januar 2005 - 13:51 #8
Try opening the report including the filter when you open i

DoCmd.OpenReport stDocName, acPreview, , "fldOrderDate = '" & me.cboDate & "'"
Avatar billede hugopedersen Nybegynder
18. januar 2005 - 14:31 #9
That doesn't work either - I wil have to go into 'think mode' and try to figure out a way do do this.  I know from earlier that filters and .adp/SQL can give some unexpected results.  I have made some solutions earlier where I have built a view in VBA, saved that on the SQL server and used that as reportsource, but this report uses to many tables.
Avatar billede terry Ekspert
18. januar 2005 - 14:35 #10
Cant you make a stored procedure with the necessary parameters and use this for the report?
Avatar billede hugopedersen Nybegynder
18. januar 2005 - 14:40 #11
That could also be a solution, but I have never been good friends with stored procedures and parameters i Access reports :-)
Avatar billede kjulius Novice
27. januar 2005 - 20:42 #12
Hmm. der er i hvert fald én anden metode du kunne prøve. Da du alligevel sætter filteret op fra din form inden du åbner rapporten, burde den virke.

Lav en selvstændig forespørgsel baseret på den du normalt ville bruge til rapporten:

SELECT * FROM Rapportdata;

Baser nu rapporten på denne forespørgsel i stedet.

Hvor du før satte rapportens filter op, ændrer du i stedet nu i SQL strengen denne forespørgsel udfører. Hvis nu du havde kaldt denne forespørgsel FiltreredeRapportdata, kunde du skrive:

Currentdb.QueryDefs("FiltreredeRapportdata").SQL = "SELECT * FROM Rapportdata WHERE fldOrderData = '" & me.cboDate & "'"

Herefter ka' du åbne rapporten. Det skulle undre mig meget om ikke sumtal passer nu, for her er det jo i hvert fald hele datagrundlaget der bliver filtreret på.
Avatar billede hugopedersen Nybegynder
28. januar 2005 - 07:32 #13
Jeg havde helt glemt dette spørgsmål da jeg fandt en løsning dagen efter mit sidste indlæg.
Jeg har hele tiden brugt en forespørgsel som grundlag da der hentes data fra flere tabeller og der er et par beregnede felter i viewet også (pris * ordreantal f.eks.)
Jeg gør så det at jeg på rapportens On_Open event laver en SQL streng f.eks.
strSQL = "SELECT * FROM " & conQuery_Nierle_Report & " WHERE fldOrdered = 0"
Jeg sætter så rapportens recordsource til at være lig med denne streng
Me.RecordSource = strSQL

Så spiller det som det skal.
Avatar billede kjulius Novice
28. januar 2005 - 09:02 #14
Ja, ja, sådan er det når man glemmer at aflyse brylluppet. Man risikerer, at der dukker gæster op, som vil bespises! :-)
28. januar 2005 - 09:31 #15
Hej Hugo,

Lukker du så ikke lige?

pfh tak :)
Avatar billede hugopedersen Nybegynder
28. januar 2005 - 09:46 #16
Jo det gør jeg
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester