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: Felder zweier Dateien auf Readseite vergleichen

Felder zweier Dateien auf Readseite vergleichen 4 Jahre 7 Monate her #877

  • Tim
  • Tims Avatar
  • Offline
  • Junior Member
  • Beiträge: 32
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?
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Felder zweier Dateien auf Readseite vergleichen 4 Jahre 7 Monate her #878

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
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)
  1. Anlegen einer Datenbank sowie einer Tabelle die alle Felder aller CSV Dateien die benötigt werden aufnehmen kann.
  2. 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.
  3. 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.
  4. 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.
  5. 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 nicht gefunden

Anhang:
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: Felder zweier Dateien auf Readseite vergleichen 4 Jahre 7 Monate her #905

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