18. januar 2005 - 12:28Der 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.
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
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 :-)
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.
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å.
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
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.