[Gelöst] Report 111 Zeilenweise Gesamtsumme

2. Juli 2007 13:51

hallo.

ich habe ein problem mit dem report 111. ich möcht dort für jeden debitor den prozenttualen anteil am gesamtumsatz darstellen. dazu benötige ich die gesamtsumme aller umsätze einer definierten periode.

mit bisheriger lösungsansatz war folgender:

Code:
r_Customer.SETRANGE(r_Customer."Date Filter");
MaxSales := 0;
IF r_Customer.FINDSET(FALSE, FALSE) THEN REPEAT
  MaxSales += Customer."Sales (LCY)";
UNTIL r_Customer.NEXT = 0;


leider wird damit die periode nicht eingegrenzt sondern scheinbar alle umsätze dargestellt.
r_Customer ist ein record auf Costumer
MaxSales ist eine Decimal Variable

danke schon mal für eure hilfe.
Zuletzt geändert von Tisi am 3. Juli 2007 08:24, insgesamt 1-mal geändert.

2. Juli 2007 14:31

Versuchs doch mal so:

Code:
r_Customer.SETRANGE("Date Filter", Customer."Date Filter");
MaxSales := 0;
IF r_Customer.FINDSET(FALSE, FALSE) THEN REPEAT
  r_Customer.CALCFIELDS("Sales (LCY)");
  MaxSales += Customer."Sales (LCY)";
UNTIL r_Customer.NEXT = 0;


Gruß, Marc

2. Juli 2007 14:46

SETRANGE mit einem FILTER?

Versuch mal

r_Customer.SETFILTER("Date Filter", Customer."Date Filter");

Oder noch besser:

Code:
CustLedgEntry.SETCURRENTKEY("Customer No.", "Posting Date");
CustLedgEntry.SETFILTER("Posting Date", Customer."Date Filter");
CustLedgEntry.CALCSUMS("Sales (LCY)");
MaxSales := CustLedgEntry."Sales (LCY)";


Und wenn der öfter aufgerufen wird, dann am besten ein neuer Schlüssel auf die "Cust. Ledger Entry" der mit "Posting Date" beginnt und ein SumIndexField "Sales (LCY)" hat.

2. Juli 2007 15:01

SilverX hat geschrieben:SETRANGE mit einem FILTER?

Stimmt, da kommt ein SETFILTER hin.

Gruß, Marc

2. Juli 2007 15:42

hallo marc, hallo silverx

danke euch erstmal für die schnelle hilfe.

marc: leider scheint der range auf das datum nicht zu funktionieren da immer noch ein viel zu hoher umsatz angezeigt wird :(

silverx: ich bekomme die fehlermeldung zu zeile 2
CustLedgEntry.SETFILTER("Posting Date", Customer."Date Filter");
Eine Typkonvertierung kann nicht durchgeführt werden...
Text := Date

habt ihr gff. noch eine idee wie ich das problem beheben kann?

2. Juli 2007 15:46

Dann hilft ggf. ein

CustLedgEntry.SETFILTER("Posting Date", '%1', Customer."Date Filter");

2. Juli 2007 16:30

hmm leider nicht

mein (bzw. dein :-D ) code sieht im moment so aus

Code:
CustLedgEntry.SETCURRENTKEY("Customer No.", "Posting Date");
CustLedgEntry.SETFILTER("Posting Date", '%1', Customer."Date Filter");
CustLedgEntry.CALCSUMS("Sales (LCY)");
MaxSales := CustLedgEntry."Sales (LCY)";


leider wirft er nun bei MaxSales = 0 aus

2. Juli 2007 17:09

Hallo,

wenn du einen setfilter verwendest, dann mit Getfilter den aktuellen Filterwert aus dem Customer rausholen:

CustLedgEntry.SETCURRENTKEY("Customer No.", "Posting Date");
CustLedgEntry.SETFILTER("Posting Date", Customer.Getfilter("Date Filter"));
CustLedgEntry.CALCSUMS("Sales (LCY)");

Gruß Palinca :-)

2. Juli 2007 17:12

Oh ja, ich NARF :>

3. Juli 2007 08:22

super danke euch vielmals ;)