Skip to main content
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Download

IF Heater mit zwei oder mehreren IF Parametern

Mehr
8 Jahre 7 Monate her #2421 von Kai
Hallo Zusammen,

ich möchte des Ergebnis des IfThenElse-Heaters von zwei Eingangsparametern abhängig machen und komme auf keine Lösung, Beispiel:

Wenn A=0 und B=J, dann X
Wenn A=0 und B=N, dann Y
Wenn A<>0 und B=J, dann Z

Weiß jemand, wie man das abbilden kann?
Kai

Bitte Anmelden um der Konversation beizutreten.

Mehr
8 Jahre 7 Monate her #2422 von FlowHeater-Team
FlowHeater-Team antwortete auf IF Heater mit zwei oder mehreren IF Parametern
Hallo Kai,

das geht derzeit nur über hintereinander verschachtelte IF-THEN-ELSE Bedingungen .

Die erste Bedingung prüft den Wert A=0 und gibt nur im Erfolgsfall den zweiten zu prüfenden Wert weiter (kein Else Parameter). Die zweite Bedingung braucht dann lediglich auf den gewünschten Wert des zweiten Wertes prüfen und gibt wiederum im Erfolgsfall (Bedingung trifft zu) den zu übernehmenden Wert weiter.

Um jetzt ggf. mehrere solcher Konstrukte einem Feld auf der WRITE zuweisen zu können benötigen Sie am Ende der Kette noch einen String Append Heater , der alle Eingangsparameter aufnimmt und nur gefüllte Werte (Option „Leere Felder ignorieren) an das gewünschte Feld weiterleitet.
Achtung: Der String Append Heater formatiert Werte automatisch als Zeichenfolge anhand der im ersten WRITE Adapter hinterlegten Standardformatierung .

Im Anhang finden Sie ein kleines Beispiel dazu.

Bei komplizierteren Bedingungen könnten solche Konstrukte auch über einen .NET Script Heater abgebildet werden, hier ein weiteres Bespiel: Komplexe If-Then-ElseIf ... Bedingung

Dateianhang:

Dateiname: if-then-el...gung.zip
Dateigröße:2 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden um der Konversation beizutreten.

Mehr
8 Jahre 6 Monate her - 8 Jahre 6 Monate her #2463 von Kai
Die Lösung ist etwas komplex und im Anhang im PDF dokumentiert. Es geht u.a. darum, den Wechsel der Belegnummer bei einer zeilenweisen Verarbeitung von Buchungssätzen zu erkennen und daraus den Ausgangsparameter abzuleiten.





Aus den zwei Eingangsparametern Belegnummer und Haben ist einer der 3 Ausgangsparamter SAB, BUC oder DIV abzuleiten, und zwar wie folgt:
- wenn Haben gleich 0 dann DIV
- wenn Haben <>0 und die Belegnummer = der Belegnummer in der daüberliegenden Zeile mit Haben = 0, dann SAB
- ansonsten BUC, d.h. Haben <>0 und Belegnummer geändert.
dazu sind mehrere IF-Heater notwendig, von links beschrieben:
1. Das erste IF selektiert, ob Haben=0, wenn ja, dann wir die Variable VBelegNr. gesetzt, wenn nein, dann passiert nichts (Die Variable ist notwendig, weil die Belegnummer sonst nicht gespeichert werden kann)
2. Das zweite IF prüft auf Haben <>0, wenn ja, dann wird die Belegnummer weitergereicht.
3. Das dritte IF prüft, ob die Belegnummer = VBelegNr. wenn ja, wird SAB gesetzt, wenn nein, dann BUC
4. Das vierte IF prüft wieder das Haben auf 0, wenn ja wird DIV gesetzt, ansonsten einer der beiden Werte aus dem dritten IF

Das war es und hat mir einiges Kopfzerbrechen bereitet.


Dateianhang:

Dateiname: loesung-me...eter.pdf
Dateigröße:108 KB
Anhänge:
Letzte Änderung: 8 Jahre 6 Monate her von FlowHeater-Team.

Bitte Anmelden um der Konversation beizutreten.

Mehr
5 Jahre 8 Monate her #3520 von Andre Seiffert
Andre Seiffert antwortete auf IF Heater mit zwei oder mehreren IF Parametern
Hallo,

ich habe diesbezüglich noch ein kleines Problem.

Ich benutze den XML Adapter als READ und den TextFileAdapter als WRITE.

In der XML sind nun Preise dargestellt. Ich möchte nur die aktuell gültigen Preise an die Write Seite abgeben. In der XML sind sowohl aktuell gültige, als auch ablaufende Preise
enthalten.

1) Der NET_LIST mit Gültigkeit bis zum 31.12.9999 soll als EKPreis übernommen werden

Bedingungen: Wenn PRICE_TYPE = net_list UND VALID_END_DATE = 99991231 dann gib PRICE_AMOUNT an EKPreis weiter.

Dies funktioniert mit der Beispiel-XML bei den Artikeln 1199044 & 1199045 auch. Bei dem Artikel 1199043 jedoch nicht.

2) Der NET_LIST_CALC gültig bis zum 31.12.9999 soll als StandardVKPreis übernommen werden

Bedingungen: Wenn PRICE_TYPE = net_list_calc UND VALID_END_DATE = 99991231 dann gib PRICE_AMOUNT an StandardVKPreis weiter.

Dies funktioniert derzeit bei keinem der Artikel. Lediglich bei dem Artikel 1199043 ist eine weiterer Preis angegeben, der bei VALID_END_DATE nicht 99991231 stehen hat. Diese Preise sollen auch unberücksichtigt bleiben.

Weiß jemand Rat?

Dateien siehe Anlage. (Layer Preise)
Anhänge:

Bitte Anmelden um der Konversation beizutreten.

Mehr
5 Jahre 8 Monate her #3521 von FlowHeater-Team
FlowHeater-Team antwortete auf IF Heater mit zwei oder mehreren IF Parametern
Hallo Herr Seiffert,

Um Bedingungen mit dem IF-THEN-ELSE Heater mit zwei Eingangsparameter vergleichen zu können müssen Sie einen kleinen Workaround anwenden.

Am einfachsten geht es wenn Sie die zwei Parameter vorher über einen String Append Heater vorher miteinander kopieren und dann in der Bedingung den kombinierten Wert vergleichen.

z.B. =99991231#net_list (hier wurde zusätzlich im String Append Heater das Zeichen # als Trennzeichen verwendet.

So geht es eigentlich relativ einfach. Im Anhang habe ich Ihnen ein kleines Beispiel basierend auf Ihre beigefügte XML Datei erstellt.

Allerdings gibt es hier ein kleines Problem. Sie wissen nicht wie viele Produktpreis Knoten in der XML Datei vorhanden sind. Im Beispiel habe ich jetzt mal die 6 Produktpreis verglichen die im ersten Artikel vorhanden sind. Würden jetzt 7 Preise zu einem Artikel geliefert würde der 7. (Preis)knoten nicht in die Verarbeitung mit einfließen, da der FlowHeater momentan XML Unterknoten nicht dynamisch lesen kann! Das sind derzeit leider die Grenzen bei der FlowHeater XML Verarbeitung auf der READ Seite.

Dateianhang:

Dateiname: xml-read.zip
Dateigröße:39 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden um der Konversation beizutreten.

Mehr
5 Jahre 8 Monate her #3522 von Andre Seiffert
Andre Seiffert antwortete auf IF Heater mit zwei oder mehreren IF Parametern
Hallo Herr Stark,

das bringt mich auf jeden Fall schon mal weiter. Ich hatte in meiner Schilderung leider noch einen kleinen Fehler eingebaut.

Es gibt 2 Varianten je Price_type net_list & net_list_calc:

Entweder gibt es einen Preis mit der Gültigkeit 99991231 oder zusätzlich zu diesem noch einen Preis der hinsichtlich der Gültigkeit kleiner als 99991231 ist. In meiner Urspungs-xml auf der Read Serite hatte als Grundlage eine falsche XML gewählt in der die Basis eine ganz andere war und zu viele Preisfelder enthalten waren.

Sollte es also nur einen Preis geben gültig bis 99991231 dann soll dieser ausgegeben werden. Sollte es jedoch zusätzlich einen Preis geben der kleiner als 99991231 ist, und größer oder gleich dem aktuellen Tagesdatum ist so soll dieser ausgegeben werden. Ich glaube hier müsste der NOW-Heater noch mit einbezogen werden?
Somit ist dann sichergestellt, dass immer der derzeit gültige Preis ausgegeben wird.

Ich hoffe, ich habe mich verständlich ausgedrückt :unsure:

Bitte Anmelden um der Konversation beizutreten.

Mehr
5 Jahre 8 Monate her #3523 von FlowHeater-Team
FlowHeater-Team antwortete auf IF Heater mit zwei oder mehreren IF Parametern
Hallo Herr Seiffert,

dann geht das (fast) nur mit Hilfe des .NET Script Heater und einem kleinen C# Skript. Rein mit Heatern/Funktionen wird es leider schwierig bzw. bei der komplexen XML Struktur unmöglich.

Ich habe die Beispiel Definition etwas angepasst. Es wurden zwei weitere Layer eingefügt auf denen jeweils nur ein .NET Script Heater vorhanden ist. Der Heater benötigt von allen XML Preisknoten jeweils die Felder Valid_End_Date, price_type und PRICE_AMOUNT genau in der Reihenfolge.

Achtung: Die Reihenfolge ist wichtig sonst funktioniert das Skript nicht!

Das Skript kann für beide Preis Typen angewendet werden, es muss lediglich im Skript (siehe Kommentar) die zweite Zeile angepasst, je nachdem welcher Typ verglichen werden soll.
Das Skript geht über alle XML Preisknoten und prüft jetzt die zwei gewünschten Bedingungen, siehe Kommentare im Skript und gibt dann den richtigen gültigen Preis zurück.

.Net C# Skript
Code:
// nur hier Anpassungen vornehmen! "net_list_calc" oder "net_list" string PriceType_Compare = "net_list"; // ab hier keine Änderungen mehr public object DoWork() { string sRetPrice = null; if (InValues.Length < 3) throw new Exception("min. 3 Eingangsparameter erwartet! (Valid_End_Date, price_type, PRICE_AMOUNT)"); if ((InValues.Length % 3) != 0) throw new Exception(String.Format("Eingangsparameter {3} ist nicht durch 3 teilbar!")); // jeweils in 3er Blöcken lesen for (int i = 0; i < InValues.Length; i = i + 3) { // 1. Eingangsparameter Valid_End_Date string sValidEndDate = (string)InValues[i].GetString(); // 2. Eingangsparemeter price_type string sPriceType = (string)InValues[i + 1].GetString(); // 3. Eingangsparameter PRICE_AMOUNT string sPriceAmount = (string)InValues[i + 2].GetString(); // Falls in einem Knoten keine Werte vorhanden sind if (sValidEndDate == null || sPriceType == null || sPriceAmount == null) continue; // Wenn PriceType gleich wie oben eingestellt und ValidEndDate gleich 99991231 und noch kein Preis zugewiesen! if (sPriceType == PriceType_Compare && sValidEndDate == "99991231" && sRetPrice == null) sRetPrice = sPriceAmount; // Wenn PriceType gleich wie oben eingestellt und ValidEndDate nicht 99991231 und größer/gleich aktuellem Datum if (sPriceType == PriceType_Compare && sValidEndDate != "99991231" && sValidEndDate.CompareTo(DateTime.Now.ToString("yyyyMMdd")) >= 0) sRetPrice = sPriceAmount; } return sRetPrice; }

Dateianhang:

Dateiname: xml-read-p...ript.zip
Dateigröße:29 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden um der Konversation beizutreten.

Mehr
5 Jahre 1 Monat her - 5 Jahre 1 Monat her #3657 von Andre Seiffert
Andre Seiffert antwortete auf IF Heater mit zwei oder mehreren IF Parametern
Hallo,

ich benötige für das Script eine kleine Änderung. Ich hoffe es kann mir geholfen werden :D

Derzeit werden auf der Write Seite nur die Preise Price_type net_list net_list_calc mit dem Valid_End_Date 31.12.9999 dargestellt.

Gewünschte Änderung:

Ist lediglich ein gültiger Preis vorhanden (Valid_End_Date = 31.12.9999) so wird dieser Preis ausgegeben. Sollte es jedoch noch einen weiteren Preis geben, so muss dieser ebenfalls mit dem entsprechenden Datum ausgegeben werden.

Auf der Write Seite sind dementsprechend standardmäßig immer 2 Preisfelder und Felder für die Angabe des Gültigkeitsdatums angegeben. 

Beispiel:

aktuell gültiger Preis:

<ns0:VALID_START_DATE>20190101</ns0:VALID_START_DATE>
<ns0:VALID_END_DATE>20190430</ns0:VALID_END_DATE>
-<ns0:PRODUCT_PRICE price_type="net_list">
<ns0:PRICE_AMOUNT>163.77</ns0:PRICE_AMOUNT>

zukünftig gültiger Preis:

<ns0:VALID_START_DATE>20180501</ns0:VALID_START_DATE>
<ns0:VALID_END_DATE>99991231</ns0:VALID_END_DATE>
-<ns0:PRODUCT_PRICE price_type="net_list">
<ns0:PRICE_AMOUNT>170.22</ns0:PRICE_AMOUNT>


Ausgabe auf der Write Seite:

EK-Preis: 163,77
gültig ab: 01.01.2019
gültig bis: 30.04.2019

EK-Preis: 170,22
gültig ab: 01.05.2019
gültig bis: 31.12.9999

Ich hoffe ich habe mich halbwegs verständlich ausgedrückt :)

Vielen Dank im Voraus.
Letzte Änderung: 5 Jahre 1 Monat her von Andre Seiffert.

Bitte Anmelden um der Konversation beizutreten.

Mehr
5 Jahre 1 Monat her #3658 von FlowHeater-Team
FlowHeater-Team antwortete auf IF Heater mit zwei oder mehreren IF Parametern
Hallo Herr Seiffert,

das geht jetzt doch über das hinaus, was im Rahmen des kostenlosen Supports geleistet werden kann. Ich bitte Sie hierfür eine kostenpflichtige Beratung/Support zu beauftragen.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden um der Konversation beizutreten.

Ladezeit der Seite: 0.360 Sekunden

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Copyright © 2009-2024 by FlowHeater GmbH. Alle Rechte vorbehalten.