[Gelöst] CC: Falsche Kumulation in temporärer Tabelle

13. Januar 2011 10:32

Hallo zusammen,

ich habe folgendes Problem beim Erstellen eines Reports:
In diesem Report wird der Auftragseingang aktuelles Jahr / Vorjahr kumuliert nach Produktgruppe gegenübergestellt.
Diese Daten werden in einer temporären Tabelle gesammelt und dann ausgegeben.

Für dieses Jahr gibt es bisher nur eine Produktgruppe die Daten enthält, für das Vorjahr sieben.

Der Report sollte also folgendermaßen aussehen:
Code:
Produktgruppe   2011   2010
A                  0   1000
B                500   2000
C                  0   1000
usw.....

Das tut er aber nicht! :shock: Mein Report sieht so aus:
Code:
Produktgruppe    2011    2010
A                 500    1000
B                 500    2000
C                 500    1000


Das heißt er schreibt die eine gefunden Summe für dieses Jahr auch in allen anderen Sätze.
Die temporäre Tabelle wird mit CASE YEAR OF gefüllt.

Was mache ich falsch?
Vorab schon mal vielen Dank für eure Hilfe
Barbara
Zuletzt geändert von Barbara May am 14. Januar 2011 10:48, insgesamt 2-mal geändert.

Re: CC: Falsche Kumulation in temporärer Tabelle

13. Januar 2011 10:46

Leider kenne ich deinen Report nicht, daher kann ich nur vermuten.
Ich sehe hier auf den ersten Blick zwei mögliche Ursachen:
1. Es wird immer das gleiche Feld angezeigt, d.h. z.B. es wird immer die gleiche Variable gezeigt oder der Datensatz wird nicht weitergestellt.
2. Beim Schreiben der Datensätze wird die (Record-)Variable nicht initialisiert und es steht somit wirklich immer der gleiche Wert in dem Feld.

Re: CC: Falsche Kumulation in temporärer Tabelle

13. Januar 2011 10:54

In der Tabelle steht tatsächlich immer ein Wert.

Der Programmiercode sieht wie folgt aus:

Code:
LineCounter += 1;
LineTmp.RESET;
LineTmp.SETRANGE(TextKey,PdGroup);
LineTmp.SETRANGE(Text1, DimValue.Name);
IF LineTmp.FINDFIRST THEN BEGIN               // gefunden dann aufaddieren
  CASE Year OF                                // Ähnlich wie IF
    Year1 :
      BEGIN
        LineTmp.Dec1 += Values[1];
      END;
    Year3 :
      BEGIN
        LineTmp.Dec2 += Values[1];
      END;
  END;
  LineTmp.MODIFY;
END ELSE BEGIN                                // nicht gefunden dann schreiben
  LineTmp.TextKey := PdGroup;
  LineTmp.IntKey  := LineCounter;
  LineTmp.Text1   := DimValue.Name;
  CASE Year OF
    Year1 :
      BEGIN
        LineTmp.Dec1 := Values[1];
      END;
    Year3 :
      BEGIN
        LineTmp.Dec2 := Values[1];
      END;
  END;
  LineTmp.INSERT;
END;
Zuletzt geändert von Timo Lässer am 13. Januar 2011 11:48, insgesamt 1-mal geändert.
Grund: [code][/code]-Tags zur besseren Lesbarkeit eingefügt

Re: CC: Falsche Kumulation in temporärer Tabelle

13. Januar 2011 11:25

Benutze bitte [code][/code] Tags, danke!
Das sieht so grausig aus

Wie wird das Values-Array gefüllt?

Re: CC: Falsche Kumulation in temporärer Tabelle

13. Januar 2011 11:57

:oops: sieht nur durch das reinkopieren so grausig aus...im Programm selbst nicht... :oops:

Ich springe mit dem YEAR in die Funktion und hole dort die Quantity...mehr passiert da nicht.

Das (zumindest für mich) Merkwürdige ist:
fange ich mit dem Vorjahr an kommen die Werte richtig raus...

Re: CC: Falsche Kumulation in temporärer Tabelle

13. Januar 2011 12:27

Barbara May hat geschrieben::oops: sieht nur durch das reinkopieren so grausig aus...im Programm selbst nicht... :oops:
Deswegen solltest du ja die [code]-Tags verwenden ;-)
Ich war mal so freundlich und habe es für dich editiert. - Zukünftig bitte selber daran denken. - Danke!

Re: CC: Falsche Kumulation in temporärer Tabelle

13. Januar 2011 12:37

Danke schön :-)

Re: CC: Falsche Kumulation in temporärer Tabelle

13. Januar 2011 15:19

JanGD hat geschrieben:Wie wird das Values-Array gefüllt?

Re: CC: Falsche Kumulation in temporärer Tabelle

13. Januar 2011 15:47

Code:
 CalcSalesLineYear(VAR "Sales Line" : Record "Sales Line";Year : Integer // Funktion
PdGroup := '';
ValuesL[1] := 0;

PdGroup := "Sales Line"."Product Group Code";

//---- Dimensionswert Aufträge aus Dimension Vorgang ermitteln
CLEAR(DimValue);
IF DocDimension.GET(DATABASE::"Sales Line",
                    "Sales Line"."Document No.",
                    "Sales Line"."Line No.",
                    SalesSetup."Dimension Code Process") THEN
  IF NOT DimValue.GET(DocDimension."Dimension Code",DocDimension."Dimension Value Code") THEN
    CLEAR(DimValue);


ValuesL[1] := "Sales Line".Quantity - "Sales Line"."Quantity Invoiced";
AddLine(Year, ValuesL, DimValue.Name, PdGroup);

Re: [Gelöst] CC: Falsche Kumulation in temporärer Tabelle

14. Januar 2011 10:50

Problem gelöst...
ich habe schlichtweg vergessen die temporäre Tabelle vorm Schreiben zu initialisieren
..trotzdem Danke für eure Hilfe