[Gelöst] Report link zweier Tabellen

17. Februar 2009 15:24

Habe zwei Tabellen verlinkt

DataItem
Erledigter Verkaufskopf
Produktionsauftragskopf

Ich möchte den Betrag aus den Aufträgen nur ausgeben und am schluss zusammenzählen, wenn der Auftrag auch ein oder mehrere Produktionsaufträge aufweist.

Wie kann ich dies anstellen?
Zuletzt geändert von maesi am 14. Mai 2009 11:21, insgesamt 1-mal geändert.

Re: Report link zweier Tabellen

17. Februar 2009 17:25

Dein DataItem "Produktionsauftragskopf" muss um eine Ebene eingerückt und über die "DataItemLink..."-Properties mit dem übergeordneten DataItem verknüpft werden.
In dem übergeordneten DataItem "ErledigterVerkaufskopf" setzt du dann das Property "PrintOnlyIfDetail" auf "Ja" und schon werden nur noch Verkaufsköpfe ausgegeben, sofern es dazu auch ein oder mehrere Produktionsauftragsköpfe gibt.

Re: Report link zweier Tabellen

18. Februar 2009 10:59

Danke für die Antwort dies hat wunderbar geklappt.

Jedoch bringt er mit auf dem Total eine Falsche ausgabe

Meine Sections sieht wie folgt aus:
Erledigter Verkaufskopf Header 1
Titel auf Seite
Erledigter Verkaufskopf Header 2
Überschriften
Erledigter Verkaufskopf Body 3
Einige Felder + Betrag als Visible nein um die Summe auszugeben
Produtkionsauftragskopf Body 1
Einige Felder
Produtkionsauftragskopf Footer 2
Materialkosten, Fertingungskosten, Herstellkosten, Betrag mit Währungsumrechnung
Erledigter Verkaufskopf Footer 4
Materialkosten, Fertingungskosten, Herstellkosten, Betrag mit Währungsumrechnung

Auf dem DataItem Erledigter Verkaufskopf
CurrReport.CREATETOTALS(Produktionsauftragskopf."Materialkosten IST+MGK",Produktionsauftragskopf."Fertigungskosten IST+FGK",
Produktionsauftragskopf."Herstellkosten IST Auftrag", ErlVerkBetragFr);
Auf dem DataItem Produktionsauftragskopf
CurrReport.CREATETOTALS("Materialkosten IST+MGK", "Fertigungskosten IST+FGK", "Herstellkosten IST Auftrag")

Wie krige ich nun das Gesamttotal richtig hin er gibt mir eine völlig inkorrekte Summe aus.

Re: Report link zweier Tabellen

19. Februar 2009 01:10

maesi hat geschrieben:Auf dem DataItem Erledigter Verkaufskopf
CurrReport.CREATETOTALS(Produktionsauftragskopf."Materialkosten IST+MGK",Produktionsauftragskopf."Fertigungskosten IST+FGK",
Produktionsauftragskopf."Herstellkosten IST Auftrag", ErlVerkBetragFr);
Auf dem DataItem Produktionsauftragskopf
CurrReport.CREATETOTALS("Materialkosten IST+MGK", "Fertigungskosten IST+FGK", "Herstellkosten IST Auftrag")


Prüf, ob du CurrReport.CREATETOTALS in jeweiligen OnPreDataItem Trigger platziert hast. Und z.B. im Erledigter Verkaufskopf Footer 4 sollte SourceExpr des Feldes wie folgt lauten:
Produktionsauftragskopf."Materialkosten IST+MGK"

Re: Report link zweier Tabellen

19. Februar 2009 10:42

Hallo Mykhaylo Libovych

Das habe ich schon, die summen aus Material, Fertigung und Herstellkosten kann ich auch einwandfrei summieren nur leider den Betrag der Verkaufssummen nicht.

Ich vermute, dass er alle Verkaufszeilen zusammenrechnet und nicht nur diejenigen die Ausgedruck werden.

Re: Report link zweier Tabellen

19. Februar 2009 11:41

Hab nun herausgefunden, dass meine Vermutung richtig war.

Er summiert alle durchlaufenen Erledigter Verkaufskopf.Betrag. Wie kann ich nun nur noch die Angezeigten (PrintOnlyIfDetail = Yes) Zeilen summieren?

Re: Report link zweier Tabellen

20. Februar 2009 00:15

maesi hat geschrieben:Er summiert alle durchlaufenen Erledigter Verkaufskopf.Betrag. Wie kann ich nun nur noch die Angezeigten (PrintOnlyIfDetail = Yes) Zeilen summieren?

Sicherlich werden die Beträge aus allen Verkaufsköpfen summiert, für welche der Trigger OnAfterGetRecord ausgeführt wird. Obwohl durch (PrintOnlyIfDetail = Yes) der Verkaufskopf nicht angezeigt wird, wurde für ihn der oben genannte Trigger ausgeführt und der Betrag aufsummiert.

Dann solltest du eine Variable durchgehend aufsummieren lassen. Es kann z.B. so aussehen:

Variable BetragGesamt, Typ Decimal.
In OnPreDataItem des Verkaufskopfes :
Code:
BetragGesamt := 0;

In OnPostDataItem des Produtkionsauftragskopfes:
Code:
IF NOT Produtkionsauftragskopf.ISEMPTY THEN BEGIN
   BetragGesamt += Verkaufskopf.Betrag;
END;

Die Variable BetragGesamt statt Verkaufskopf.Betrag anzeigen lassen. Dadurch werden die Beträge nur von Verkaufsköpfen aufsummiert, die auch angezeigt werden. Dabei brauchst du weder CREATETOTALS noch TotalFields für Verkaufskopf.Betrag

Viel Spaß beim Testen
Gruß, Michael

Re: Report link zweier Tabellen

20. Februar 2009 12:08

Hallo Michael

Das hat einwandfrei funktioniert.

Besten Dank euch allen.

Gruss Maesi