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: Mehrfachfilterung

Mehrfachfilterung 4 Jahre 11 Monate her #760

  • Steffen
  • Steffens Avatar
  • Offline
  • New Member
  • Beiträge: 8
Hallo Gemeinde,

erstmal bin ich sprachlos das es so ein Tool gibt. hab ewig gesucht ! Prima soweit.

Mein Problem

ich bekomme eine .csv Datei die selektiert werden muß.

in der csv sind etwa 150 Kategorien von denen ich nur 4 brauche und aus den 4 Kategorien auch nicht alle Unterkategorien.

die csv sieht wie folgt aus

KATEGORIE;UNTERKATEGORIE1;UNTERKATEGORIE2;ARTIKELNUMMER;ARTIKELNAME;GEWICHT;VK-BRUTTO;EAN

Kann ich in einem Abwasch nur bestimmten KATEGORIEN und gleichzeitig auch nur aus diesen KATEGORIEN nach bestimmten UNGTERKATEGORIEN filtern ?

mein 2. Problem

ist es möglich gleichzeitig mehrere csv dateien erstellen zu lassen oder kann das nur einzeln erfolgen ?

Also eine stamm.csv mit allen Artikeln aus bestimmten KATEGORIEN und dann als bsp. nur eine EAN.csv mit ARTIKELNUMMER;EAN aus der gefilterten stamm.csv ?

Danke für Eure Hilfe oder einen Tip
Steffen
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Mehrfachfilterung 4 Jahre 11 Monate her #761

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
Hallo Steffen,

dafür gäbe es mehrere Wege. Ich stelle Ihnen hier mal meiner Ansicht nach die einfachste und flexibelste Möglichkeit dar.

Sie benötigen dazu einen String Append, einen String Replace, einen IF-THEN-ELSE Heater für die Filter Bedingung und den Filter Heater.

Der String Append Heater fasst die beiden CSV Felder KATEGORIE und UNTERKATEGORIE zu einer Zeichenkette zusammen. Ich habe hier zwischen den beiden CSV Feldern ein Trennzeichen "#" angegeben. Daraus wird dann z.B.
Kategorie = 1, Unterkategorie = 2, wird zu 1#2

Im String Replace Heater habe ich eine Liste erstellt die dann ersetzt wird.

z.B.
1#2;0
2#2;0
usw.

Hier müssen Sie ihre Kategorien und Unterkategorien eintragen die Sie als CSV Dateien exportieren möchten. Kommt jetzt z.B. 1#2 im Replace Heater an wird dieser Wert komplett mit dem Wert 0 = zweite Spalte der Liste ersetzt. Im String Replace Heater wurde zusätzlich konfiguriert, dass wenn die eingehende Zeichenfolge in der Liste nicht gefunden wird, der Wert "1" zurückgegeben wird.

Auf diesen Wert "1" wird jetzt im IF-THEN-ELSE Heater abgefragt, trifft die Bedingung zu wird die CSV Zeile gefiltert. So landen nur CSV Zeilen auf der WRITE Seite die Sie in der Ersetzen Liste des Replace Heater angegeben haben.

Im Anhang befindet sich dazu ein kleines Beispiel.

Anhang mehrfachfilter.zip nicht gefunden



Zu Ihrer zweiten Frage) Hierfür müssen Sie momentan noch 2 Definitionen anlegen und nacheinander Ausführen. Über ein CMD Skript und dem Batch Modul können Sie das automatisieren.

z.B.

@echo off
FHBatch.exe CSV-Export-1.fhd
FHBatch.exe CSV-Export-2-fhd
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: Mehrfachfilterung 4 Jahre 11 Monate her #762

  • Steffen
  • Steffens Avatar
  • Offline
  • New Member
  • Beiträge: 8
Vielen Dank

Ich habe das eben mal versucht nachzubauen mit den Namen der Kategorien also SOUND;Kopfhörer usw und habe das in dem Replace auch abgeändert also SOUND#Kopfhörer;0 aber es klappt nicht ?


Ich habe das gestern mit einem Script probiert

public object DoWork()
{
if (InValues.Length == 0)
throw new ArgumentException("min. 1 Eingangsparameter erwartet!");

// der cast ist notwendig, da die Funktionen GetString, ...
// den Datentyp Object liefern!
string cmp = (string)InValues[0].GetString();
string ret = String.Empty;

switch (cmp)
{
case "SOUND":
ret = "Audio";
break;

case "COMPUTER":
ret = "iPad & Tablets";
break;

case "TV VIDEO":
ret = "Tv & Video";
break;

case "Videogames & Konsolen":
ret = "Games";
break;

default:
// Falls keines der oberen vergleiche greift und dem .Net Script Heater
// ein weiterer Parameter übergeben wurde, dann wird dieser
// zurückgeliefert ansonsten der Text "nicht vorhanden"
if (InValues.Length > 1)
ret = (string)InValues[1].GetString();
else
ret = "0";
break;
}

return ret;
}

Und dann eben mit dem Filter den Weg frei gemacht oder nicht.

Das Funktioniert auch Prima und ich kann gleich noch die Kategorien umbenennen wie ich es brauch :)

Schön wäre jetzt noch eine Möglichkeit die täglich neu erstellte Datei mit der erstellten von gestern zu vergleich, also Die Artikelnummer;VK Brutto;und Availbility und zusätzlich eine Import Datei zu erstellen in denen nur änderungen sind. Ich habe das mit dem Replace probiert und aus einer localen Datei verglichen aber irgendwie kam ich mit den einstellungen nicht zurecht?


Ich habe mir nur den Designer gekauft, kann ich das Batch Modul nachkaufen?

Ich hänge das mal an vieleicht schauen Sie mal über

Danke
Steffen
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Mehrfachfilterung 4 Jahre 11 Monate her #763

  • Steffen
  • Steffens Avatar
  • Offline
  • New Member
  • Beiträge: 8
der Anhang nocheinmal
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Mehrfachfilterung 4 Jahre 11 Monate her #764

  • Steffen
  • Steffens Avatar
  • Offline
  • New Member
  • Beiträge: 8
Ich bekomme die Datei nicht geladen ?

hier zum Download
Letzte Änderung: 11 Monate 5 Tage her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Mehrfachfilterung 4 Jahre 11 Monate her #765

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
um einen CSV Abgleich bzw. einen CSV Export zu generieren der nur zum Vortag geänderte CSV Zeilen enthält müssen Sie den String Replace Heater mit einer externen CSV Liste füttern.

Hinweis: Sie benötigen für jeden Wert, den Sie vergleichen möchten einen separaten String Replace Heater!

Der Replace Heater erhält als Inputparameter die ArtikelNr. Dann wird der Replace Heater so konfiguriert, dass die Gesamte eingehende Zeichenkette verglichen wird, sowie dass der Wert komplett mit dem gefundenen ersetzt wird. So stellen Sie sicher, dass eine Artikelnummer 1 nicht auch in 11 gefunden wird! Als Rückgabewert müssen Sie die CSV Spalte der gestrigen Datei angeben die den VK bzw. Availbility enthält. Im Beispiel 1x Spalte 2 und 1x Spalte 3.

Somit haben wir eine Art Datenbank Lookup auf eine CSV Datei realisiert. Kommt jetzt eine Artikelnummer 12345 an sucht der Replace Heater die betroffene CSV Zeile mit der gleichen Artikelnummer in der gestrigen Datei und liefert die konfigurierte CSV Spalte zurück. Hier 1x den VK Preis sowie 1x Availbility.

Dann benötigen Sie für die Filterbedingung einen .NET Script Heater mit 4 Eingangsparametern
  1. VK aus dem ersten Replace Heater
  2. CSV VK Feld der READ Seite
  3. Availbility aus dem zweiten Replace Heater
  4. CSV Availbility Feld der READ Seite

Und folgenden Script.
public object DoWork()
{
  if (InValues.Length != 4)
    throw new Exception("4 Eingangsparameter erwartet");

  string sVK1 = (string)InValues[0].GetString();
  string sVK2 = (string)InValues[1].GetString();

  string sAV1 = (string)InValues[2].GetString();
  string sAV2 = (string)InValues[3].GetString();

  if (sVK1 != sVK2)
    return false;

  if (sAV1 != sAV2)
    return false;

  return true; // keine Änderung, CSV Zeile kann gefiltert werden
}

Das Skript prüft jetzt ob sich wenigstens ein Wertepaar voneinander unterscheidet. Wird kein unterschied festgestellt wird TRUE zurückgeliefert und der Filter Heater filtert diesen CSV Satz heraus.

So erzeugen Sie einen CSV Abgleich, der nur veränderte CSV Datensätze enthält.

PS: Die Replace Heater in Ihrer Definition die Sie verwenden um Punkt nach Komma zu ersetzen können Sie sich sparen! Wenn Sie die READ Seite so konfigurieren, dass das Zahlenformat Ihrer CSV Eingangsdatei entspricht, wandelt der FlowHeater diese Zahlen automatisch in den richtigen Wert um, siehe Beispiel im Anhang.



Anhang csv_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: Mehrfachfilterung 4 Jahre 11 Monate her #766

  • Steffen
  • Steffens Avatar
  • Offline
  • New Member
  • Beiträge: 8
Oha das sieht sehr gut aus und es ist der Hammer das das so funktioniert.

Nur bei mir nicht :)

Ich habe das jetzt mit all meinen Möglichkeiten versucht nachzubauen, vom Ansatz her klappt auch alles, aber wenn der Artikel neu ist schreibt er irgendwie die artikelnummer in die VK und Availbility Felder ?

Das verstehe ich nicht, können Sie bitte nocheinmal überschauen ?

Vielen Dank für Ihre Hilfe
Letzte Änderung: 11 Monate 5 Tage her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Mehrfachfilterung 4 Jahre 11 Monate her #767

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
Das liegt daran, da Sie diese Felder über den String Replace Heater befüllen und im Replace Heater angegeben ist, wenn der Wert in der CSV Liste nicht gefunden wird soll der Eingangsparameter zurückgegeben werden. Das Sie den CSV Lookup über die Artikelnummer machen ist das in diesem Fall korrekt.

Lösung)
  1. Die Felder direkt von der READ zur WRITE Seite verbinden. So ist es denke ich korrekt, s. Beispiel im Anhang.
  2. Sie geben im String Replace Heater einen anderen Default Wert als den Rückgabewert an der geliefert wird falls die Artikelnummer in der CSV Liste nicht gefunden wird. s. Screenshot



Anhang csv_abgleich-20111230.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: Mehrfachfilterung 4 Jahre 11 Monate her #768

  • Steffen
  • Steffens Avatar
  • Offline
  • New Member
  • Beiträge: 8
Vielen Dank,

ich habs verstanden und auch so basteln können wie ich es brauche.

Ein richtig mächtiges Werkzeug.

Guten Rutsch und alles gute für 2012

Steffen
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.097 Sekunden