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

Werte aus XML Tag filtern und dividieren

Mehr
3 Jahre 6 Monate her #4039 von Andre Seiffert
Werte aus XML Tag filtern und dividieren wurde erstellt von Andre Seiffert
Hallo Herr Stark,

ich versuche aus einem TAG einer XML einen Wert herauszufiltern wenn ein anderer TAG diese Einheit enthält. Ist der Wert gefunden, so soll hier auch eine Division stattfinden und das Ergebnis der der Einheit auf der Write Seite weitergegeben werden.

Ich habe schon einiges versucht, komme aber nicht zum gewünschten Ergebnis. 

Am einfachsten ist dies über die angehängten Bilder zu erklären.

Ist das so umzusetzen?
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 6 Monate her - 3 Jahre 6 Monate her #4043 von FlowHeater-Team
FlowHeater-Team antwortete auf Werte aus XML Tag filtern und dividieren
Hallo Herr Seiffert,

ich habe das leider nicht ganz verstanden. Im Anhang finden Sie mal ein Beispiel wie Sie Berechnungen Anhand von Feldinhalten über den IF-THEN-ELSE Heater steuern können. Das Beispiel verwendet aber keine XML Datei , sondern eine Textdatei zur Veranschaulichung. Schauen Sie sich das mal an ob das das widerspiegelt was Sie suchen. Falls nicht bitte auf Basis dieses Beispiels etwas genauer beschreiben was Sie durchführen möchten, Danke.

Dateianhang:

Dateiname: xml-werte-...chen.zip
Dateigröße:7 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:
Letzte Änderung: 3 Jahre 6 Monate her von FlowHeater-Team.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 6 Monate her - 3 Jahre 6 Monate her #4046 von Andre Seiffert
Andre Seiffert antwortete auf Werte aus XML Tag filtern und dividieren
Hallo Herr Stark,

bei einem Artikel der von der Fläche 0,5 m² groß ist und auch in abgerechnet wird, ist die Liefermengeneinheit (kleinste Abgabemengeneinheit) die PLATTE (PLT). Die Angabe der Liefermengeneinheit findet man in meiner XML in dem TAG USER_DEFINED_DELIVERY_QUANTITY.


In diesem Tag ist lediglich diese Einheit angegeben. Voraussetzung ist aber, dass diese Einheit auch bei diesem Artikel mit der entsprechenden Menge gepflegt ist. Dafür sind die TAGs USER_DEFINED_ALTERNATIVE_QUANTITY_UNITS enthalten. Pro Artikel gibt es aber mehrere mögliche Einheiten: Beispiel:

Kunststoffplatte 1x0,5m (= 0,5m²)
Paket = 12 Platten  (= 6m²)


Der FlowHeater soll also die Einheit, die unter USER_DEFINED_DELIVERY_QUANTITY gepflegt ist in den TAGs USER_DEFINED_ALTERNATIVE_QUANTITY_UNITS suchen. Wird sie gefunden, so soll die Einheit unter Alternative ME ausgegeben UND die Werte Numerator/Denominator dividiert werden und in das Feld Alternative ME Inhalt geschrieben werden.


Ich hoffe, ich habe es nun eindeutiger geschildert :)
Anhänge:
Letzte Änderung: 3 Jahre 6 Monate her von Andre Seiffert.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 6 Monate her #4047 von FlowHeater-Team
FlowHeater-Team antwortete auf Werte aus XML Tag filtern und dividieren
Hallo Herr Seiffert,

das ist etwas komplexer und geht eigentlich nur noch über den .NET Script Heater (bzw. 2x) sowie untenstehende C# Skripte.

Das erste Skript gibt die „Alternative Liefermengeneinheit“ falls passend zurück. Das Skript erwartet als ersten Eingangsparameter den zu prüfenden Wert sowie alle weiteren möglichen (aus den XML Unterknoten) Liefermengeneinheiten.

Das zweite Skript gibt den berechneten Wert zurück falls die Liefermengeneinheit gefunden wurde. Dazu benötigt das Skript wieder als ersten Eingangsparameter den zu prüfenden Wert. Dann müssen pro Gruppe (XML Unterknoten) die Werte für „Alternative Liefermengeneinheit“, Alternative Liefermenge, sowie den Teiler übergeben werden.

Hinweis: Beide Skripte können beliebig viele Gruppen (XML Unterknoten) übergeben werden, es werden alle übergebenen Eingangsparameter dynamisch verarbeitet, lediglich die Reihenfolge ist wichtig!

Im Anhang finden Sie ein Beispiel dazu. Zwecks Vereinfachung wieder als Textdatei realisiert, kann aber auch für den XML Adapter verwendet werden.

Block 2 bzw. 3 (XML Unterknoten) kann beliebig oft übergeben werden, Reihenfolge beachten!



Skript 1)
Code:
public object DoWork() {  if (InValues.Length < 2)  throw new Exception("Es werden mind. 2 Eingangsparameter benötigt");  // Ersten Eingangsparameter holen, dieser Wert wird gesucht!  string search = (string)InValues[0].GetString();  // alle anderen Eingangsparameter prüfen und bei gefunden diesen zurückgeben  for(int i = 1; i < InValues.Length; i++)  {  string current = (string)InValues[i].GetString();  if (current == search) return current;  }  // Falls nicht gefunden leere Zeichenfolge zurückliefern  return ""; }


Skript 2)
Code:
public object DoWork() {  if ((InValues.Length -1) % 3 != 0)  throw new Exception("Es müssen immer Dreierpaare angegeben werden!");  // Ersten Eingangsparameter holen, dieser Wert wird gesucht!  string search = (string)InValues[0].GetString();  // alle anderen prüfen, und bei gefunden berechneten Wert zurückliefern  for(int i = 1; i < InValues.Length; i += 3)  {  string current = (string)InValues[i].GetString();  if (current == search)  { decimal d1 = Convert.ToDecimal(InValues[i + 1].GetDecimal()); decimal d2 = Convert.ToDecimal(InValues[i + 2].GetDecimal()); return d1 / d2;  }  }  // Falls nicht gefunden leere Zeichenfolge zurückgeben  return ""; }

Dateianhang:

Dateiname: xml-search-node.zip
Dateigröße:8 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 oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 6 Monate her - 3 Jahre 6 Monate her #4048 von Andre Seiffert
Andre Seiffert antwortete auf Werte aus XML Tag filtern und dividieren
Hallo Herr Stark,

super, vielen Dank! Grundsätzlich funktioniert es.

Aber: Es gibt Artikel, die haben USER_DEFINED_ALTERNATIVE_QUANTITY_UNITS gepflegt, jedoch gibt es KEINE gepflegte Liefermengeneinheit bei USER_DEFINED_DELIVERY_QUANTITY. Anscheinend sorgt so eine Konstellation für eine Division durch 0 und es werden keine Werte ausgegeben. Zumindest erscheint folgende Meldung, wenn ein solcher Artikel in der XML vorhanden ist.

 

Kann man in so einem Fall den Abbruch verhindern?
Anhänge:
Letzte Änderung: 3 Jahre 6 Monate her von Andre Seiffert.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 6 Monate her #4049 von FlowHeater-Team
FlowHeater-Team antwortete auf Werte aus XML Tag filtern und dividieren
Hallo Herr Seiffert,

dann muss das Skript noch leicht modifiziert werden. Mit dem beigefügten C# Skript wird geprüft ob eine „Division durch 0“ stattfindet, siehe unten.

Angepasstes C# Skript, Prüfung auf Division durch 0
Code:
public object DoWork() {  if ((InValues.Length -1) % 3 != 0)  throw new Exception("Es müssen immer Dreierpaare angegeben werden!");  // Ersten Eingangsparameter holen, dieser Wert wird gesucht!  string search = (string)InValues[0].GetString();  // alle anderen prüfen, und bei gefunden berechneten Wert zurückliefern  for(int i = 1; i < InValues.Length; i += 3)  {  string current = (string)InValues[i].GetString();  if (current == search)  { decimal d1 = Convert.ToDecimal(InValues[i + 1].GetDecimal()); decimal d2 = Convert.ToDecimal(InValues[i + 2].GetDecimal()); // Prüfen auf Division durch 0 if (d2 != 0) {  return d1 / d2; } else {  return d1; }  }  }  // Falls nicht gefunden leere Zeichenfolge zurückgeben  return ""; }

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 oder Registrieren um der Konversation beizutreten.

Mehr
3 Jahre 6 Monate her #4050 von Andre Seiffert
Andre Seiffert antwortete auf Werte aus XML Tag filtern und dividieren
Super, vielen Dank. Damit funktioniert es einwandfrei! :)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.316 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.