Zum Hauptinhalt springen
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 Chart

Feldlänge Wortlänge in IF-THEN-ELSE berücksichtigen

  • Umberto W. Ferrari
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
1 Jahr 3 Monate her #4888 von Umberto W. Ferrari
Feldlänge Wortlänge in IF-THEN-ELSE berücksichtigen wurde erstellt von Umberto W. Ferrari
Liebe Coummunitiy,

Ich habe folgende Aufgabenstellung:
Das Feld [RECEIVER NAME1] soll geprüft werden, ob es mehr als 30 Zeichen enthält.WENN NEIN
Die Daten sollen ohne Änderung ins Feld [RECEIVER NAME1] geschrieben werden.
WENN JA
Die ersten 30 Zeichen sollen ins Feld [RECEIVER NAME1] geschrieben werden UND die übrigen Zeichen sollen ins Feld [RECEIVER NAME2] geschrieben werden.

Ich weiß nicht, wie ich in einer IF-THEN-ELSE die Länge des Feldinhalts abfragen kann.

Für Hilfe bedanke ich mich bereits jetzt.

Gruss uwf.

FlowHeater ein wirklich starkes Programm | Robert Stark ein genialer Entwickler und Supporter.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Jahr 3 Monate her #4889 von FlowHeater-Team
Hallo Herr Ferrari,

das Prüfen auf die Länge des Feldinhaltes ist hier eigentlich gar nicht notwendig.

Sie können einfach 2x den SubString Heater verwenden. Im ersten tragen Sie für „Start Index“ 1 und „Länge“ 30 ein und im zweiten tragen Sie dann für "Start Index" 31 und "Länge" 0 ein, das sollte es gewesen sein.

Im Anhang finden Sie ein kleines Beispiel dazu. Im Beispiel ist zusätzlich noch vorhanden wie die Länge einer Zeichenfolge per IF-THEN-ELSE Heater geprüft wird.

 

Dateianhang:

Dateiname: feldlaenge...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.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Umberto W. Ferrari
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
1 Jahr 3 Monate her - 1 Jahr 3 Monate her #4890 von Umberto W. Ferrari
Umberto W. Ferrari antwortete auf Feldlänge Wortlänge in IF-THEN-ELSE berücksichtigen
Hallo Robert Stark,

danke für die schnelle Antwort. 

Der von Ihnen beschriebene Weg ist mir bekannt. 

Die geschilderte Aufgabenstellung ist stark vereinfacht, um nicht die ganze Komplexität darstellen zu müssen. 

Die Kernfrage ist, ob es möglich ist, in Abhängigkeit der Anzahl Zeichen in einem Feld bestimmte Tasks auszuführen? Also ungefähr so:

IF LENGTH(Feld)>30 THEN mache Aktion1 ELSE mache Aktion2. 

Ich wünsche einen schönen Abend und grüsse
uwf. 

FlowHeater ein wirklich starkes Programm | Robert Stark ein genialer Entwickler und Supporter.
Letzte Änderung: 1 Jahr 3 Monate her von Umberto W. Ferrari. Begründung: Ergänzung, Korrekturen

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Jahr 3 Monate her #4892 von FlowHeater-Team
Hallo Herr Ferrari,

wenn ich ein Beispiel erstellen soll, bräuchte ich bitte etwas genauere Angaben was genau wie gemacht werden soll. Ich versuche immer die Umsetzung so einfach wie mögliche zu gestallten.

Im Anhang finden Sie ein angepasstes Beispiel, das etwas komplexer ist aber im Prinzip das gleiche macht.

 

Dateianhang:

Dateiname: feldlaenge...7-18.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.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Umberto W. Ferrari
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
1 Jahr 3 Monate her #4896 von Umberto W. Ferrari
Umberto W. Ferrari antwortete auf Feldlänge Wortlänge in IF-THEN-ELSE berücksichtigen
Hallo Robert Stark,

ich danke Ihnen erneut für die schnelle Antwort. Das hat mich weitergebracht.

Die gesamte Aufgabenstellung lautet wie folgt:
  1. Kunden liefern in [INPUT.XLSX] in den Spalten [RECEIVER NAME1] und [RECEIVER NAME2] Daten.
  2. Pro Spalte [RECEIVER NAME1] und [RECEIVER NAME2] dürften die Kunden maximal 30 Zeichen einfügen. Machen sie in manchen Fällen nicht.
  3. Jetzt gilt es, diese beiden Spalten [RECEIVER NAME1] und [RECEIVER NAME2] zu prüfen.
  4. Die Summe der Zeichen von [RECEIVER NAME1] und [RECEIVER NAME2] ist nie größer als 90.
  5. In der Datei [OUTPUT.XLSX] bestehen die drei Spalten [RECEIVER NAME1], [RECEIVER NAME2] und [RECEIVER NAME3].
  6. Die Spalten [RECEIVER NAME1], [RECEIVER NAME2] und [RECEIVER NAME3] dürfen je maximal 30 Zeichen enthalten.
Fall 1: LENGTH[RECEIVER NAME1]<=30 UND LENGTH[RECEIVERNAME2]<=30
  1. Daten [RECEIVER NAME1] und Daten [RECEIVER NAME2] werden unverändert in die entsprechenden Spalten von [OUTPUT.XLSX] geschrieben.
Fall 2: LENGTH[RECEIVER NAME1]<=30 UND LENGTH[RECEIVERNAME2]>30
  1. Daten [RECEIVER NAME1] werden unverändert in die entsprechende Spalte von [OUTPUT.XLSX] geschrieben.
  2. Daten [RECEIVER NAME2] SubString(1|30) werden in [RECEIVER NAME2] und [RECEIVER NAME2] Substring(31|0) werden in [RECEIVER NAME3] geschrieben.
Fall 3: LENGTH[RECEIVER NAME1]>30 UND LENGTH[RECEIVERNAME2]<=30
  1. Daten [RECEIVER NAME1] SubString(1|30) werden in [RECEIVER NAME1] geschrieben.
  2. Daten [RECEIVER NAME1] SubString(31|0) werden in [RECEIVER NAME2] geschrieben.
  3. Daten [RECEIVER NAME2] werden in [RECEIVER NAME3] geschrieben.
Fall 4: LENGTH[RECEIVER NAME1]>30 UND LENGTH[RECEIVERNAME2]>30
  1. Daten [RECEIVER NAME1] SubString(1|30) werden in [RECEIVER NAME1] geschrieben.
  2. Daten [RECEIVER NAME1] SubString(31|0) werden in [RECEIVER NAME2] geschrieben.
  3. Daten [RECEIVER NAME2] SubString(1|X) werden an die Zeichen aus [RECEIVER NAME1] in [RECEIVER NAME2] angehängt.
  4. Daten [RECEIVER NAME2] SubString(X|Y] werden in [RECEIVER NAME3] geschrieben.
Für allfällige Ideen bin ich natürlich sehr, sehr dankbar.

Ich wünsche Ihnen einen schönen Tag und grüsse Sie herzlich
uwf.

FlowHeater ein wirklich starkes Programm | Robert Stark ein genialer Entwickler und Supporter.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Jahr 3 Monate her #4897 von FlowHeater-Team
Hallo Herr Ferrari,

damit kann ich was anfangen

Das geht eigentlich nur per Skript und dem .NET Script Heater. Im Anhang finden Sie ein Beispiel wo ich das mal soweit vorbereitet habe.
Das Skript erwartet die zwei Eingangsparameter „Receiver1“ und „Receiver2“ und setzt dann 3 FlowHeater Parameter die dann den Ausgangsfeldern per Get Parameter Heater zugewiesen werden.
Den beschriebenen Fall 4 habe ich nicht ganz verstanden und aktuell nur halb umgesetzt. Hier müsste noch etwas individuelle Programmierung inkl. Tests stattfinden, Aufwand ca. 1-2 Stunden.

C# Skript Parameter setzen
Code:
public object DoWork() {     if (InValues.Length != 2)         throw new Exception("2 Eingangsparameter erwartet!");     // hier die Max. Länge ändern!     int len = 10;     // 1. (=0) Eingangsparameter holen     string in1 = (string)InValues[0].GetString();     // 2. (=1) Eingangsparameter holen     string in2 = (string)InValues[1].GetString();     // Parameter zurücksetzen     Parameter["Receiver1"].Value = "";     Parameter["Receiver2"].Value = "";     Parameter["Receiver3"].Value = "";     // Bedingungen     if (in1.Length <= len && in2.Length <= len)     {         // Fall 1         Parameter["Receiver1"].Value = in1;         Parameter["Receiver2"].Value = in2;     }     else if (in1.Length <= len && in2.Length > len)     {         // Fall 2         Parameter["Receiver1"].Value = in1;         Parameter["Receiver2"].Value = in2.Substring(0, len);         Parameter["Receiver2"].Value = in2.Substring(0, len);         Parameter["Receiver3"].Value = in2.Substring(len);     }     else if (in1.Length > len && in2.Length <= len)     {         // Fall 3         Parameter["Receiver1"].Value = in1.Substring(0, len);         Parameter["Receiver2"].Value = in1.Substring(len);         Parameter["Receiver3"].Value = in2;     }     else if (in1.Length > len && in2.Length > len)     {         // Fall 4         Parameter["Receiver1"].Value = in1.Substring(0, len);         Parameter["Receiver2"].Value = in1.Substring(len);         // Das müsste individuell angepasst werden!     }     // in dem Fall wird keine Rückgabe benötigt     return null; }


 

Dateianhang:

Dateiname: feldlaenge...ript.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.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Umberto W. Ferrari
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
1 Jahr 3 Monate her #4899 von Umberto W. Ferrari
Umberto W. Ferrari antwortete auf Feldlänge Wortlänge in IF-THEN-ELSE berücksichtigen
Hallo Robert Stark,

danke erneut für die schnelle Antwort.

Mit dem TextFileAdapter funktioniert Ihr Skript wunderbar. Wenn ich das gleiche Skript für den ExcelAdapter (Read & Write) verwende (siehe Anhang), funktioniert es nicht. Mache ich etwas falsch?

Zum Fall 4:
Fall 4: LENGTH[RECEIVER NAME1]>30 UND LENGTH[RECEIVER NAME2]>30
  1. Die Summe der Zeichen aus [RECEIVER NAME1] und [RECEIVER NAME2] ist nie größer als 90 Zeichen.
  2. Daten [RECEIVER NAME1] SubString(1|30) werden in [RECEIVER NAME1] geschrieben.
  3. Daten [RECEIVER NAME1] SubString(31|0) werden in [RECEIVER NAME2] geschrieben.
  4. Daten [RECEIVER NAME2] SubString(1|X) werden an die Zeichen aus [RECEIVER NAME1] in [RECEIVER NAME2] angehängt.
  5. Daten [RECEIVER NAME2] SubString(X|Y] werden in [RECEIVER NAME3] geschrieben.
  • Die ersten 30 Zeichen von [RECEIVER NAME1] sollen ins Feld [RECEIVER NAME1] geschrieben werden.
  • Die restlichen Zeichen (>30) sollen ins Feld [RECEIVER NAME2] geschrieben werden.
  • Es wird berechnet, wie viele Zeichen noch in Feld [RECEIVER FELD2] verfügbar sind, wenn in Feld [RECEIVER FELD2] maximal 30 Zeichen stehen dürfen.
  • Diese Zahl von Zeichen wird mit einem Leerzeichen getrennt an die Zeichen aus [RECEIVER FELD1] in [RECEIVER FELD2] angehängt.
  • Die übrigen Zeichen aus [RECEIVER FELD2] werden in [RECEIVER FELD3] geschrieben.

Sorry, dass ich so kompliziert bin.

Ich wünsche einen schönen Abend und grüsse Sie herzlich
uwf.

FlowHeater ein wirklich starkes Programm | Robert Stark ein genialer Entwickler und Supporter.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Jahr 3 Monate her #4900 von FlowHeater-Team
sorry ich hatte vergessen zu erwähnen, dass in dem Fall die Ausführung im .NET Script Heater auf „Pro Zeile/Satz“ gestellt werden muss, siehe Screenshot.

Hintergrund) Da der .NET Script Heater keine Verbindung zur WRITE Seite hat wird das Skript in dem Fall „Standard“ sonst nicht ausgeführt.


 

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.

  • Umberto W. Ferrari
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
1 Jahr 3 Monate her #4902 von Umberto W. Ferrari
Umberto W. Ferrari antwortete auf Feldlänge Wortlänge in IF-THEN-ELSE berücksichtigen
Diese Nachricht enthält vertrauliche Informationen.

FlowHeater ein wirklich starkes Programm | Robert Stark ein genialer Entwickler und Supporter.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Umberto W. Ferrari
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
1 Jahr 3 Monate her #4903 von Umberto W. Ferrari
Umberto W. Ferrari antwortete auf Feldlänge Wortlänge in IF-THEN-ELSE berücksichtigen
 
Hallo Robert Stark,

so funktioniert es, auch mit dem ExcelAdapter.

Danke Ihnen vielmals!

Wie löse ich die Aufgabe, wenn nicht nur die Felder [RECEIVER NAME1] und [RECEIVER NAME2], sondern zudem die Felder [RECEIVER ADDRESS1] und [RECEIVER ADDRESS2] in gleicher Art bearbeitet werden sollen?

Sie hatten geschrieben, dass Sie für den Fall 4 eine bis zwei Stunden Aufwand benötigen. Darf ich Sie fragen, wie hoch Ihr Stundenansatz ist?

Ich danke Ihnen für eine Antwort und grüsse Sie herzlich
uwf.
 

FlowHeater ein wirklich starkes Programm | Robert Stark ein genialer Entwickler und Supporter.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Jahr 3 Monate her #4904 von FlowHeater-Team
Hallo Herr Ferrari,

so wie Sie es gemacht haben ist es schon richtig. Sie müssen den .NET Script Heater ein zweites Mal verwenden und hier die Parameternamen anpassen. Wichtig ist, dass Sie auch hier die „Ausführung“ von „Standard“ auf „Pro Zeile/Satz“ stellen.
 

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.

Ladezeit der Seite: 0.337 Sekunden
FlowHeater Logo

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.