Der Abgleich von zwei oder auch mehreren CSV Dateien kann über den Umweg einer Datenbank durchgeführt werden. Im Anhang befindet sich dazu ein Beispiel. Hier verwende ich für die temporäre Zwischenspeicherung eine MS Access Datenbank.
Vorgehensweise)
- Anlegen einer Datenbank sowie einer Tabelle die alle Felder aller CSV Dateien die benötigt werden aufnehmen kann.
- Der erste CSV Import sollte die primäre CSV Datei beinhalten. Hier auf der WRITE Seite INSERT Aktivieren sowie die Option „Tabelle vor dem Import leeren“ aktivieren.
- Für alle weiteren CSV Importe die Option INSERT deaktivieren und nur UPDATES aktivieren. Zusätzlich muss hier der PrimaryKey (nur im FlowHeater) auf die ArtikelNummer umgebogen werden.
- Pro CSV Datei müssen jetzt nur die jeweils benötigten Felder mit der WRITE Seite Verbunden werden. Das Schlüsselfeld (hier die ArtikelNr) muss bei Updates immer mit der WRITE Seite verbunden werden, sonst weiß der FlowHeater nicht welchen Datensatz er aktualisieren soll.
- Zum Schluss muss das Ganze dann noch einmalig exportiert werden.
Führen Sie im Beispiel die Definitionen
artikel.fhd
preise.fhd
fremdsystem.fhd
export-csv-abgleich.fhd
Nacheinander aus, haben Sie am Ende einen CSV Export der alle Daten der einzelnen CSV Dateien enthält. Zusätzlich habe ich hier noch in der Definition "Fremdsystem.fhd" eingebaut, dass nur Artikel die auch hier vorhanden sind exportiert werden!
Hinweis: Über das
Batch Modul
können diese Schritte automatisiert ausgeführt werden.
.Net Script Heater mit mehreren Rückgabewerten)
Das geht mittlerweile. Über
Parameter
können Sie hier auch mehrere Werte in der Definition zur Verfügung stellen.
int count = 0;
public object DoWork()
{
count++;
// Parameter setzen
Parameter["p2"].Value = "### 2. Parameter ###" + count.ToString();
Parameter["p3"].Value = "!!! 3. Parameter !!!" + count.ToString();
// und so weiter
// zugriff auf Parameter im Script
string s = (string)Parameter["p2"].GetString();
// Rückgabe auch als Intger oder DateTime, Double, Decimal, Long, Boolean
// DateTime dt = (DateTime)Parameter["p2"].GetDateTime();
// int i = (int)Parameter["p2"].GetInt();
return "??? 1.Parameter ???" + count.ToString();
}
Im Anhang befindet sich dazu ebenfalls ein Beispiel "dotnet-script-mehrere-rückgabewerte.fhd".
Anhang csv_dateien_abgleich.zip wurde nicht gefunden.