- Beiträge: 32
Felder zweier Dateien auf Readseite vergleichen
- Tim
- Autor
- Offline
- Benutzer
Weniger
Mehr
12 Jahre 7 Monate her #877
von Tim
Felder zweier Dateien auf Readseite vergleichen wurde erstellt von Tim
Hallo,
Im Grunde sollte der Titel heißen "2 Dateien auf der Readseite", doch den gab es weiter unten schon und so ganz wird das der Sache nicht wirklich gerecht, da der FH es in der aktuellen Version nicht zulässt, mehrere Files auf der Write-Seite zu verarbeiten.
Da mich der Umgang mit dem Replaceheater nicht weiter zum Ziel brachte, da der imho nur ein Feld zurückgeben kann, ist mir noch keine Lösung einfallen und starte diesen Aufruf hier.
Folgende Aufgabenstellung:
2 CSV Dateien sollen zusammengeführt werden. Als Kriterium dafür soll jeweils 1 Feld aus jeder der beiden CSV Dateien auf match verglichen werden, ansonsten werden die Daten nicht zusammengeführt. Als sind die beiden Felder das Kriterium.
Der Replaceheater ermöglicht mir zwar das Ersetzen, doch nur das eines einzigen Feldes und ich habe mindestens 10 davon die in den Export zur Writeseite eingeschleust werden müssten
Als mögliche Lösung käme ein NET-Heater zum Einsatz, in dem ich das File einmalig einlese, deren 10 Felder in ein Array packe und zuvor noch das betreffende Feld gegen das aus der Readseite abgleiche.
Doch dann kommt noch die Mimik, wie ich die anderen Felder zur Writeseite durchschleuse.
Geht das überhaupt, mehr als einen Rückgabewert im NET-heater und falls ja, wie?
Mir ist dabei klar, wie ich die Felder durchschleuse, doch was nicht in meinen Kopf will ist die Mimik die diesen Datensatz dann überspringen soll bei mismatch.
Haben Sie einen passenden workaround dazu parat?
Im Grunde sollte der Titel heißen "2 Dateien auf der Readseite", doch den gab es weiter unten schon und so ganz wird das der Sache nicht wirklich gerecht, da der FH es in der aktuellen Version nicht zulässt, mehrere Files auf der Write-Seite zu verarbeiten.
Da mich der Umgang mit dem Replaceheater nicht weiter zum Ziel brachte, da der imho nur ein Feld zurückgeben kann, ist mir noch keine Lösung einfallen und starte diesen Aufruf hier.
Folgende Aufgabenstellung:
2 CSV Dateien sollen zusammengeführt werden. Als Kriterium dafür soll jeweils 1 Feld aus jeder der beiden CSV Dateien auf match verglichen werden, ansonsten werden die Daten nicht zusammengeführt. Als sind die beiden Felder das Kriterium.
Der Replaceheater ermöglicht mir zwar das Ersetzen, doch nur das eines einzigen Feldes und ich habe mindestens 10 davon die in den Export zur Writeseite eingeschleust werden müssten
Als mögliche Lösung käme ein NET-Heater zum Einsatz, in dem ich das File einmalig einlese, deren 10 Felder in ein Array packe und zuvor noch das betreffende Feld gegen das aus der Readseite abgleiche.
Doch dann kommt noch die Mimik, wie ich die anderen Felder zur Writeseite durchschleuse.
Geht das überhaupt, mehr als einen Rückgabewert im NET-heater und falls ja, wie?
Mir ist dabei klar, wie ich die Felder durchschleuse, doch was nicht in meinen Kopf will ist die Mimik die diesen Datensatz dann überspringen soll bei mismatch.
Haben Sie einen passenden workaround dazu parat?
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
12 Jahre 7 Monate her #878
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: Felder zweier Dateien auf Readseite vergleichen
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)
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.
Im Anhang befindet sich dazu ebenfalls ein Beispiel "dotnet-script-mehrere-rückgabewerte.fhd".
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.
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.
Code:
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.
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.
- Tim
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 32
12 Jahre 6 Monate her #905
von Tim
Tim antwortete auf Aw: Felder zweier Dateien auf Readseite vergleichen
Hallo,
vielen Dank für die Hilfestellung, sie passte wie immer gut.
Ich habe auch auf die Rückgabewerte aufgegriffen und zu einer ziemlich unspektakulären und einfachen Lösung umgebaut.
Die dazu auch noch schlecht zu funktionieren scheint :laugh:
Leider darf ich keine Files uploaden, doch ich würde Ihnen gerne mal was zusenden damit Sie einen Blick drauf werfen können.
Ich nehme dazu die mir bekannte mailadresse, hoffe das ist okay.
vielen Dank für die Hilfestellung, sie passte wie immer gut.
Ich habe auch auf die Rückgabewerte aufgegriffen und zu einer ziemlich unspektakulären und einfachen Lösung umgebaut.
Die dazu auch noch schlecht zu funktionieren scheint :laugh:
Leider darf ich keine Files uploaden, doch ich würde Ihnen gerne mal was zusenden damit Sie einen Blick drauf werfen können.
Ich nehme dazu die mir bekannte mailadresse, hoffe das ist okay.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.263 Sekunden