Hej! Skapa en fråga som slår ihop tabellerna "OMSÄTTNING" OCH "KONTRAKT" och innehåller fälten "Belopp", "ÅrMånad" och "Objekts_nr". Använd denna fråga i funktionerna DSumma och DSlåUpp istället för tabellen "OMSÄTTNING". Tack så jättemycket Åsa! :-) Skapa ett nytt formulär och lägg till två textrutor. Tack igen Åsa! :-)Beloppssummeringar i rapport baserat på vald fastighet i startformuläret
I startformuläret för omsättning väljer man en fastighet i en kombinationsruta. Då kommer det fram en rapport för den fastigheten som ska innehålla följande kolumner:
* ÅrMånad
(Ska fixa så att det visas ÅÅÅÅ-MM istället för ÅÅÅÅ-MM-DD även här i rapporterna, se mitt förra inlägg)
* SummaförBelopp
(Summering av alla belopp för den valda fastighet och denna ÅrMånad)
* Ackumulerat belopp
(Summering av alla belopp för den valda fastigheten, från årets första månad fram till denna ÅrMånad)
* SummaförBelopp/FörraÅretsSummaförBelopp
(SummaförBelopp delat med summering av alla belopp för den valda fastigheten för månaden som är precis ett år innan denna ÅrMånad. Detta görs för att få fram procentuell förändring)
* Ackumulerat belopp/FörraÅretsAckumuleratBelopp
(Ackumulerat belopp delat med summering av alla belopp för den valda fastigheten, från förra årets första månad fram till samma månad som denn ÅrMånad fast året innan. Detta görs för att få fram procentuell förändring)
Datakälla för rapporten är:
SELECT OMSÄTTNING.ÅrMånad, Sum(OMSÄTTNING.Belopp) AS SummaförBelopp, KONTRAKT.Objekts_nr
FROM KONTRAKT INNER JOIN OMSÄTTNING ON KONTRAKT.Kontrakt_nr = OMSÄTTNING.Kontrakt_nr
GROUP BY OMSÄTTNING.ÅrMånad, KONTRAKT.Objekts_nr
HAVING (((KONTRAKT.Objekts_nr) Like [Forms]![frm_Startmeny_Omsättning]![ViaFastighet]));
Tidigare hade varje kontrakt egna rader i rapporten och följande beräknande fält användes:
* Ackumulerat belopp:
=DSumma("[Belopp]";"Omsättning";"[kontrakt_nr] = '" & [kontrakt_nr] & "' And [ÅrMånad] Between #" & DatumSerie(År([ÅrMånad]);1;1) & "# And #" & [ÅrMånad] & "#")
* Belopp/FörraÅretsBelopp:
=(([Belopp]/DSlåUpp("[Belopp]";"Omsättning";"[kontrakt_nr] = '" & [kontrakt_nr] & "' And [ÅrMånad] = #" & DatumSerie(År([ÅrMånad])-1;Månad([ÅrMånad]);1) & "#"))-1)
* Ackumulerat belopp/FörraÅretsAckumuleratBelopp
=((DSumma("[Belopp]";"Omsättning";"[kontrakt_nr] = '" & [kontrakt_nr] & "' And [ÅrMånad] Between #" & DatumSerie(År([ÅrMånad]);1;1) & "# And #" & [ÅrMånad] & "#")/DSumma("[Belopp]";"Omsättning";"[kontrakt_nr] = '" & [kontrakt_nr] & "' And [ÅrMånad] Between #" & DatumSerie(År([ÅrMånad])-1;1;1) & "# And #" & DatumSerie(År([ÅrMånad])-1;Månad([ÅrMånad]);1) & "#"))-1)
och det fungerade perfekt.
Idealet hade varit att nu kunna ersätta kontrakt_nr med Objekts_nr och att det ska vara samma som valt objekts_nr i kombinationslistan. Problemet är dock att objekts_nr finns i Kontrakttabellen och inte i Omsättningstabellen, så det går inte att köra DSumma och DSlåupp i rapportens textfält.
Enda möjligheten, om det nu finns någon, verkar vara att skapa beräknande fält i rapportens datakälla? För där finns ju kopplingen mellan de båda tabellerna och vilket objekts_nr som ska användas.
Hur kan man angripa detta?
Mycket tacksam för hjälp!
CarinaSv: Beloppssummeringar i rapport baserat på vald fastighet i startformuläret
Sv:Beloppssummeringar i rapport baserat på vald fastighet i startformuläret
Jag hade låst mig totalt och hade ingen tanke på att slå ihop tabellerna!
Kanske jag kan ställa en fråga angående mitt tidigare inlägg?
Ditt förslag angående att visa i formatet ÅÅÅÅ-MM fungerade perfekt när det gällde kombinationslistorna.
Kom sedan på att jag hade en textruta i ett formulär som också skulle visa det formatet. Jag gjorde en nödlösning genom att ändra till en listruta och gjorde på liknande sätt som för kombinationsrutan.
Men det är även några textrutor i rapporter där datumformatet ska ändras till ÅÅÅÅ-MM.
Har testat med Format() och DatePart(), både då jag använder det direkt i textrutan eller som ett uttryck i rapportens datakälla, men får bara felmeddelanden.
Har även testat att använda År([ÅrMånad]) & "-" & Månad([ÅrMånad]) i textfältet, men då blir det bara ensiffrig månad för januari - september.
Tänkte då att man kanske kan använda någonting liknande det här:
IIf(År([ÅrMånad])<10, År([ÅrMånad]) & "-0" & Månad([ÅrMånad]),År([ÅrMånad]) & "-" & Månad([ÅrMånad]))
men får inte till det.
Skulle du kunna hjälpa mig även med detta så har du räddat min dag!
Även andra får förstås hjälpa mig med denna fråga!
/CarinaSv: Beloppssummeringar i rapport baserat på vald fastighet i startformuläret
Ange följande egenskaper:
Första textrutan
Namn: MittDatum
Format: åååå-mm
Andra textrutan
Kontrollkälla: =MittDatum
Testa sedan att skriva in t.ex. 2009-11 i den första textrutan. Som du ser är värdet av textrutan MittDatum första dagen i angiven månad. Du kan alltså direkt använda värdet i MittDatum som ett "riktigt datum" när du bygger upp ditt villkor eller vad du nu vill göra.Sv:Beloppssummeringar i rapport baserat på vald fastighet i startformuläret
Så det var bara att göra så! Trodde att man var tvungen att använda en funktion för att få till det.
Nu ska det förhoppningsvis bara vara kvar saker som jag klarar av att fixa till själv i den här databasen?
Tack för all ovärderlig hjälp! :-)
/Carina