[gelöst]fowfilter-im Report Daten addieren aus einer Tabelle

23. Februar 2008 13:02

Hallo,

ich bin gerade dabei verschiedene Berichte zusammen zustellen.
Ich benötige Auftragsbuch Datumfilter ist gesetzt und klappt auch.

Grundlage meines Berichtes ist die 'Sales Header' Tabelle. Ich benötige aber auch Gesamtgewicht und Gesamtpreis des Auftrages.
Ich müsste jetzt auf die Sales Line zugreifen und entpsrchend der Positionen 2 Felder Summieren.

Mache ich das am besten mit einem Flowfilter/Flowfields und wenn wie. Habe da momentan keine Vorstellung und kein passenden Hilfeeintrag zu gefunden.


mfg Harrison
Zuletzt geändert von Harrison am 26. Februar 2008 07:58, insgesamt 2-mal geändert.

23. Februar 2008 13:36

Da du auf mehr als ein Feld der Sales Line gleichzeitig zugreifen möchtest (Gewicht und Preis), würde ich hierfür kein FlowField verwenden (bzw. erstellen), sondern pro Sales Header in einer Schleife alle Sales Lines durchlaufen und die entsprechenden Werte manuell aufaddieren. Entweder verwendest du hierfür ein eigenes DataItem, oder du machst es über eine Record-Variable.

25. Februar 2008 10:35

Hallo,

habe es schon mal probiert mit einem Data-Item.
Das Problem: Ich Filtere die Datensätze nach einem Datum. Habe es aber nicht geschaft im Vorfeld schon die Daten auf das Datum zu Filtern. in den Report-Properties im Filter konnte ich keine entsprechende Formel mit meinen Kenntnissen einsetzten. Daruch habe ich angedrucke Leerzeilen in einem unregelmäßigen Abstand.
Wie realesiere ich die Schleife das alle Zeilen angesprochen werden
do .. while ist mir aus anderen Codesprachen ein Begriff. Wie lautet der Code bei Navision.

mfg Harrison

25. Februar 2008 10:43

Von was für einem Datum im SalesLine-Bereich sprichst du jetzt? Auf was sollen deine Zeilen zusätzlich gefiltert werden?

WHILE gibt es auch in Navision:

Code:
WHILE Bedingung = TRUE DO BEGIN
  [...]
END;


Aber ich glaube nicht, dass du das in diesem Zusammenhang wirklich brauchst.

25. Februar 2008 12:06

Hallo Natalie,

die GL benötigt ein Dokument (Tagesprotokoll) über ausgehende Rechnungen und eingehende Aufträge. Dafür erstelle ich gerade 2 Reports die bei Tagesabschluss gedruckt werden sollen. Belegdatum=TODAY oder WORKDAY

mfg Harrison

25. Februar 2008 12:27

Aber was hat das Durchlaufen der Zeilen mit der Datumsproblematik zu tun?

dir hat geschrieben:habe es schon mal probiert mit einem Data-Item.
Das Problem: Ich Filtere die Datensätze nach einem Datum.

und
dir hat geschrieben:Grundlage meines Berichtes ist die 'Sales Header' Tabelle. Ich benötige aber auch Gesamtgewicht und Gesamtpreis des Auftrages.
Ich müsste jetzt auf die Sales Line zugreifen und entpsrchend der Positionen 2 Felder Summieren.

25. Februar 2008 16:30

Hallo Natalie,

Ich brauch noch mal Hilfe von Anfang an
Ich habe mich nun total verkettet hier.
Um jetzt weiter zu kommen würde ich gerne in dem Report mit dem DataItem Sales Header jetzt eine Schleife programmieren in der über die Belegnummer gefiltert auf die Sales Line zugegriffen wird und dann jede Zeile Feld Menge * mit Netto Gewicht addiert zum Gesamtgewicht und das selbe bei dem Wert der Position errechnet wird und an den Repor übergeben werden und in einer Zeile ausgedruckt werden.
Diese Programmierung habe ich noch nicht gemacht in Navision. Ich sehe jetzt 2 möglichkeiten. Im Sales Header gibt es ein Feld 'max Position'. Nun könnte ich die erste Zeile in der Tabele nehmen 'Sales Line.Belegnummer'='Sales Header.No' und dann weiter bis max Pos. oder es gibt die Möglichkeit generell zu sagen lege mir eine Temp.-Tabelle an mit der Information 'Sales Line.Belegnummer'='Sales Header.No' und summiere mir dort von erster Zeile bis letzter Zeile.

Bin über jeden Code dankbar

mfg Harrison.



mfg Harrison

25. Februar 2008 16:41

Um alle Belegzeilen eines best. Beleges zu durchlaufen, hast zwei Möglichkeiten (siehe mein erster Beitrag). Ich beschreibe mal die Variante mit der Recordvariablen.

Erstelle eine globale Variable (ich nenne sie jetzt Gewicht).
Wechsle in das DataItem Sales Header in den OnAfterGetRecord-Trigger.
Erstelle hier eine lokale Variable vom Typ Sales Line (ich nenne sie nun SalesLine2) und schreibe folgendes:
Code:
Gewicht := 0;
SalesLine2.SETRANGE("Document Type", "Document Type";
SalesLine.SETRANGE2("Document No.", "No.";
SalesLine.SETFILTER2(Quantity, '<>%1', 0);
IF SalesLine2.FIND('-') THEN
  REPEAT
    Gewicht += SalesLine2.Quantity * SalesLine2."Net Weight";
  UNTIL SalesLine2.NEXT = 0;


Lass dir Gewicht im Report ausgeben.

25. Februar 2008 17:56

Danke Natalie,

hab mit den spezifischen Codes wie ('-') im FIND noch nicht so drin und keine logische Eselsbrücke dazu (Fehlen wohl ein paar Navision-Designer-Schulungen) aber ich kann das wenigestens auf andere Probleme übertragen und weiter verwenden.

Es klappt !!

mfg Harrison