10. Februar 2016 10:25
Hallo,
ich hab ein FlowField mit einem Tabellen Filter eingerichtet der wie folgt aussieht:
- Code:
Sum(Customer."Balance Fibu (LCY)" WHERE (Consol. Customer No.=FIELD(Consol. Customer No.),Consol. Customer No.=FILTER(<>'')))
Der Filter soll folgendes bewirken. Er soll alle Werte aufsummieren, wenn die Consol. Customer No. gleich ist und wenn Sie leer ist soll er 0 ausgeben.
Allerdings sieht es für mich so aus das er in diesem Fall eine Oder-Verknüpfung macht, da der Wert viel zu hoch ist im Vergleich zu dem wenn ich das FlowField ohne den Filter
- Code:
Consol. Customer No.=FILTER(<>'')
benutze.
Selbst wenn ich einen Datensatz öffne bei dem der "Consol. Customer No." nicht leer ist, stimmt der Wert der angezeigt wird trotzdem nicht.
Schon mal vorab vielen Dank für eure Hilfe.
Zuletzt geändert von pjung am 10. Februar 2016 14:38, insgesamt 2-mal geändert.
10. Februar 2016 10:47
Zum Filtern auf Flowfields können nur FlowFilter-Felder benutzt werden.
Anwendungsbeispiele findet man in Tabelle 27 Item in Feldern "Inventory" und "Net Change" (zusätzlicher Datumsfilter).
10. Februar 2016 11:00
Hallo,
vielen Dank für deine schnelle Antwort.
Also verstehe ich das dann richtig, dass bei den Tabellen Filtern im Flow-Field sich immer um eine Oder-Verknüpfung handelt?
10. Februar 2016 11:16
pjung hat geschrieben:Also verstehe ich das dann richtig, dass bei den Tabellen Filtern im Flow-Field sich immer um eine Oder-Verknüpfung handelt?
Nein, man schreibt die benötigten Filterausdrücke in die FlowFilter-Felder (da ist alles zulässig: Oder,Und,Ungleich,Größer,Kleiner, Range) und alle gemeinsam wirken sich dann auf alle FlowFields in dieser Tabelle aus, die diese FlowFilter-Felder in der CalcFormula haben.
10. Februar 2016 11:45
Hallo,
ich glaube wir haben gerade aneinander vorbei geredet.
Ich würde gerne noch wissen, ob die Tabellen Filter im FlowField Und- oder Oder-Verknüpft sind.
Sum(Customer."Balance Fibu (LCY)" WHERE (Consol. Customer No.=FIELD(Consol. Customer No.),Consol. Customer No.=FILTER(<>'')))
Sind die Werte an der fett gedruckten Stelle immer Oder-Verknüpft oder nur in diesem Falle?
10. Februar 2016 12:26
Ich glaube, dass der unterste Filter maßgeblich ist. In deinem Fall kommen also alle Werte mit "Consol. Customer No." <> ''. Dass darin die der ersten Bedingung enthalten sind, liegt an den Filtern. Es ist aber weder eine Und- noch eine Oder-Verknüpfung.
10. Februar 2016 12:38
Ich steh jetzt etwas auf dem Schlauch.
Könnt ihr mir evtl. ein Beispiel geben wie der Filter aussehen muss wenn ich folgendes Ergebnis haben möchte
Es soll auf summiert werden wenn die Consol. Customer No. gleich ist und die Consol. Customer No. nicht leer ist.
10. Februar 2016 12:44
pjung hat geschrieben:Sind die Werte an der fett gedruckten Stelle immer Oder-Verknüpft oder nur in diesem Falle?
Gar nicht, denn es wird ja zwei mal das gleiche Feld verwendet, der erste Ausdruck entspricht einem SETRANGE im Code , der zweite einem SETFILTER., jeweils auf das gleiche Feld.
Das wäre im Code genauso unsinnig wie hier.
Er soll alle Werte aufsummieren, wenn die Consol. Customer No. gleich ist und wenn Sie leer ist soll er 0 ausgeben.
Dafür reicht
ein Filter. Wenn der SETRANGE mit der Nummer
- Code:
WHERE (Consol. Customer No.=FIELD(Consol. Customer No.)
nichts findet, kommt auch nichts.
Wenn man dann die Werte,
die nicht 0 sind, ggf. noch filtern möchte, muss dort dann ein FlowFilter-Feld gesetzt werden, kein normales. Das FlowFilter-Feld wird in der Customer-Tabelle angelegt und setzt dann die beliebigen Filterausdrücke auf die andere Tabelle.
10. Februar 2016 13:38
Ja das klingt sehr plausible und meine Frage im nachhinein dumm.
Dennoch hänge ich immer noch an dem Problem. (Hab mit den FlowFields & Filter noch nicht wirkl. gearbeitet)
Wie Vorgeschlagen habe versuche ich es mit einem FlowFilter.
Das FlowField sieht nun wie folgt aus:
- Code:
Sum(Customer."Balance Fibu (LCY)" WHERE (Consol. Customer No.=FIELD(Test)))
Und der FlowFieldFilter
- Code:
IF (Consol. Customer No.=FILTER(='')) Customer.No. WHERE (No.=FIELD(No.)) ELSE Customer."Consol. Customer No." WHERE (No.=FIELD(No.))
Ich filter auch auf dem FlowFilter mit SetRange in onAfterGetRecord.
Allerdings bekomme ich damit auch nicht das gewünschte Ergebnis, wenn die "Consol. Customer No." leer ist.
10. Februar 2016 13:40
Alternativ könnte man eine Und- oder Oder-Verknüpfung in einer Funktion der Tabelle realisieren und auf einer Form wie ein Feld anzeigen. Man kann darauf nur nicht filtern. Und den Drilldown müsste man ausprogrammieren.
10. Februar 2016 13:43
Daran hatte ich auch schon gedacht, aber ich hätte doch ganz gerne, dass wenn man die Tabelle öffnet auch in den Felder die richtige Werte drin stehen und nicht nur in der Form.
10. Februar 2016 13:46
Welche Relevanz hat das? Dazu wird doch kaum ein Anwender berechtigt sein.
10. Februar 2016 13:49
Es geht mir in dem Fall eher um einen Entwickler der ggf. nicht daran denk, dass noch eine Logik in der Form drin ist und deswegen etwas falsches mit dem FlowField macht.
10. Februar 2016 13:51
Und wenn du die Funktion, wie schon vorgeschlagen, in die Tabelle packst?
10. Februar 2016 13:55
Oh Entschuldigung das hatte ich überlesen.
Stimmt das ist eine gute Idee, so werde ich es machen.
Vielen Dank an euch beide
10. Februar 2016 21:00
pjung hat geschrieben:Und der FlowFieldFilter
- Code:
IF (Consol. Customer No.=FILTER(='')) Customer.No. WHERE (No.=FIELD(No.)) ELSE Customer."Consol. Customer No." WHERE (No.=FIELD(No.))
Ich filter auch auf dem FlowFilter mit SetRange in onAfterGetRecord.
Allerdings bekomme ich damit auch nicht das gewünschte Ergebnis, wenn die "Consol. Customer No." leer ist.
Das ist kein FlowFilter. Ein FlowFilter-Feld (das ist der FieldType) ist leer und wird zu Laufzeit entweder vom Anwender oder im Code vor dem CALCFIELDS mit ganz normalen Filterausdrücken belegt.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.