Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: 1. Bedingte Verarbeitung 2. Assoziative Stringersetzung

1. Bedingte Verarbeitung 2. Assoziative Stringersetzung 5 Jahre 8 Monate her #356

  • Tim
  • Tims Avatar
  • Offline
  • Junior Member
  • Beiträge: 32
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 vieleicht nötig ist.


Das wars erstmal, vielen Dank vorab

Crypto
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: 1. Bedingte Verarbeitung 2. Assoziative Stringersetzung 5 Jahre 8 Monate her #357

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
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
' 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#.
// 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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: 1. Bedingte Verarbeitung 2. Assoziative Stringersetzung 5 Jahre 8 Monate her #363

  • Tim
  • Tims Avatar
  • Offline
  • Junior Member
  • Beiträge: 32
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.077 Sekunden