- Beiträge: 32
1. Bedingte Verarbeitung 2. Assoziative Stringersetzung
- Tim
- Autor
- Offline
- Benutzer
Weniger
Mehr
13 Jahre 7 Monate her #356
von Tim
1. Bedingte Verarbeitung 2. Assoziative Stringersetzung wurde erstellt von Tim
Hallo, ich brauche mal Hilfe!
Um die Problemstellung zu erörtern, vereinfache ich sie auf das Nötigste:
Datenexport:
READ: Excel-Adapter Felder: ArtID, ArtikelBez ......
Die Artikelbez soll nur dann von Net-Heater 1 bearbeitet werden, wenn ArtikelID mit z. B. "G" beginnt
Beginnt sie jedoch mit z.B. "Q" , soll sie über Net-Heater 2 bearbeitet werden.
Das ist sonst auch nicht schwierig, nur diesmal liegt die Abhängigkeit in einem anderen Feld und genau da hängt es mit der Umsetzung gerade?
Dann noch ein zweites Problem:
Ich muss Strings (Artikelbezeichnungen) assoziativ ergänzen.
Kommt ein LIEBH CM 5509 as Artikelbezeichnung, soll damit ein z.B. LIEBHERR CoffeeMaker 5509 assoziiert und der Datensatz dazu ergänzt werden.
Da es sich dabei um sehr viele Artikelbezeichnungen handelt, kann ich das schlecht komplett per VB.NET in einem NET-HEATER per string.contains() oder String.startsWith() und Select Case regeln, sondern würde das in entsprechende Schlüssel-Wert Datei auslagern, wobei es egal wäre ob CSV oder sonstige.
Gibt es dazu eine Idee oder bereits vorhandene Problemlösung.
Ich habe da etwas Bedenken eventuell zu viel Aufwand zu betreiben, als vielleicht nötig ist.
Das wars erstmal, vielen Dank vorab
Crypto
Um die Problemstellung zu erörtern, vereinfache ich sie auf das Nötigste:
Datenexport:
READ: Excel-Adapter Felder: ArtID, ArtikelBez ......
Die Artikelbez soll nur dann von Net-Heater 1 bearbeitet werden, wenn ArtikelID mit z. B. "G" beginnt
Beginnt sie jedoch mit z.B. "Q" , soll sie über Net-Heater 2 bearbeitet werden.
Das ist sonst auch nicht schwierig, nur diesmal liegt die Abhängigkeit in einem anderen Feld und genau da hängt es mit der Umsetzung gerade?
Dann noch ein zweites Problem:
Ich muss Strings (Artikelbezeichnungen) assoziativ ergänzen.
Kommt ein LIEBH CM 5509 as Artikelbezeichnung, soll damit ein z.B. LIEBHERR CoffeeMaker 5509 assoziiert und der Datensatz dazu ergänzt werden.
Da es sich dabei um sehr viele Artikelbezeichnungen handelt, kann ich das schlecht komplett per VB.NET in einem NET-HEATER per string.contains() oder String.startsWith() und Select Case regeln, sondern würde das in entsprechende Schlüssel-Wert Datei auslagern, wobei es egal wäre ob CSV oder sonstige.
Gibt es dazu eine Idee oder bereits vorhandene Problemlösung.
Ich habe da etwas Bedenken eventuell zu viel Aufwand zu betreiben, als vielleicht nötig ist.
Das wars erstmal, vielen Dank vorab
Crypto
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
13 Jahre 7 Monate her #357
von FlowHeater-Team
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.
FlowHeater-Team antwortete auf Aw: 1. Bedingte Verarbeitung 2. Assoziative Stringersetzung
Zu Ihrer 1. Frage: Sie können dem .NET Script Heater auch mehrere Parameter übergeben, so können Sie das in einem Skript verarbeiten, siehe Beispiel Skript in VB.NET
Wenn's denn unbedingt über 2 .NET Script Heater sein muss können Sie das Ergebnis auch nach der Verarbeitung über einen String Append Heater zusammenführen. Hier müssen Sie dann im jeweiligen Skript bei nicht Verarbeitung einen Leerstring zurückliefern. Der String Append Heater fügt dann die 2 Ergebnisse der .NET Script Heater zusammen (1xLeerstring + 1x das Ergebnis). Den Output weisen Sie dann dem Feld auf der WRITE Seite zu.
Zu Ihrer 2. Frage: Das können Sie ebenfalls mit dem .NET Script Heater und folgenden kleinen Skript durchführen, siehe Beispiel Skrip in C#.
Das Skript liest einmalig eine CSV Textdatei "ersetzen.txt" ein. Hier können Sie die zu ersetzenden Werte ein pflegen. Als Eingangsparameter müssen Sie dem Heater die Artikelbezeichnung übergeben. Findet das Skript die Bezeichnung wird der 2. Wert der CSV Datei zurückgegeben, wenn nicht wird der ursprüngliche Eingangsparameter geliefert.
z.B.
FH;FlowHeater
D;Designer
B;Batch
…
Code:
' VB.NET Script Beispiel
Public Function DoWork() As Object
Dim sArtNr as String
Dim sRet as String
Dim sBedingung1 as String
Dim sBedingung2 as String
sArtNr = InValues(0).GetString()
If sArtNr is Nothing Then sArtNr = ""
sBedingung1 = InValues(1).GetString()
If sBedingung1 is Nothing Then sBedingung1 = ""
sBedingung2 = InValues(2).GetString()
If sBedingung2 is Nothing Then sBedingung2 = ""
If sBedingung1 = "G" Then
sRet = sArtNr + " G Fall"
Else If sBedingung2 = "Q" Then
sRet = sArtNr + " Q Fall"
Else
sRet = sArtNr
End If
DoWork = sRet
End Function
Wenn's denn unbedingt über 2 .NET Script Heater sein muss können Sie das Ergebnis auch nach der Verarbeitung über einen String Append Heater zusammenführen. Hier müssen Sie dann im jeweiligen Skript bei nicht Verarbeitung einen Leerstring zurückliefern. Der String Append Heater fügt dann die 2 Ergebnisse der .NET Script Heater zusammen (1xLeerstring + 1x das Ergebnis). Den Output weisen Sie dann dem Feld auf der WRITE Seite zu.
Zu Ihrer 2. Frage: Das können Sie ebenfalls mit dem .NET Script Heater und folgenden kleinen Skript durchführen, siehe Beispiel Skrip in C#.
Code:
// Beispiel Skript in C#
// globales String Array
string [] lines = null;
public object DoWork()
{
string sRet = String.Empty;
string sCompare = (string)InValues[0].GetString();
if (sCompare == null)
sCompare = String.Empty;
sCompare = sCompare.ToUpper().Trim();
// ersetzen Liste nur einmalig einlesen
if (lines == null)
lines = File.ReadAllLines("ersetzen.txt");
if (lines != null)
{
foreach (string line in lines)
{
// CSV Datei 1. Feld = Wert der geucht wird, 2. Feld = Rückgabe bei match
char[] split = { ';' };
string[] sTemp = line.Split(split);
if (sTemp[0].ToUpper().Trim() == sCompare)
{
sRet = sTemp[1];
break;
}
}
}
else
{
// nicht gefunden!
sRet = (string)InValues[0].GetString();
}
return sRet;
}
Das Skript liest einmalig eine CSV Textdatei "ersetzen.txt" ein. Hier können Sie die zu ersetzenden Werte ein pflegen. Als Eingangsparameter müssen Sie dem Heater die Artikelbezeichnung übergeben. Findet das Skript die Bezeichnung wird der 2. Wert der CSV Datei zurückgegeben, wenn nicht wird der ursprüngliche Eingangsparameter geliefert.
z.B.
FH;FlowHeater
D;Designer
B;Batch
…
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.
- Tim
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 32
13 Jahre 7 Monate her #363
von Tim
Tim antwortete auf Aw: 1. Bedingte Verarbeitung 2. Assoziative Stringersetzung
Jo, so ist das :blush:
Man gut das es hier niemand hören konnte, wie es geklatscht hat als ich mir beim Lesen Ihrer Antwort die flache Hand vor die Stirn schlug.
Natürlich kann man NET Heatern mehrere Parameter übergeben, das muss ich allerdings wohl erst noch verinnerlichen.
Naja und so war das Problem dann auch keines mehr.
Danke nochmals
Man gut das es hier niemand hören konnte, wie es geklatscht hat als ich mir beim Lesen Ihrer Antwort die flache Hand vor die Stirn schlug.
Natürlich kann man NET Heatern mehrere Parameter übergeben, das muss ich allerdings wohl erst noch verinnerlichen.
Naja und so war das Problem dann auch keines mehr.
Danke nochmals
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.260 Sekunden