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: Überprüfung (If then else)

Überprüfung (If then else) 5 Jahre 10 Monate her #265

  • Felix Höning
  • Felix Hönings Avatar
  • Offline
  • New Member
  • Beiträge: 6
Hallo ich möchte gerne eine Überprüfung zweier Tabellen durchführen, indem ich eine ERP Nummer die in beiden Tabellen vorhanden sein kann vergleiche. Falls diese Nummer schon vorhanden ist sollen weitere Daten der Read Seite nach Write geschrieben werden.
Ist die Nummer noch nicht vorhanden auf der Write Seite soll nichts passieren.
Habe leider mit den Beispielen zu keiner Lösung kommen können.

Bin für alle Lösungsvorschläge Dankbar.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Überprüfung (If then else) 5 Jahre 10 Monate her #268

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Höning,

Wenn Sie nur Datensätze der READ Seite importieren wollen wo die ERP Nummer auf der WRITE Seite noch nicht vorhanden ist, lässt sich das denke ich ganz einfach lösen.

Sie brauchen dazu auf der WRITE Seite im Configurator lediglich die Option "Daten anfügen (Insert)" sowie "vorhandene Datensätze ignorieren" aktivieren. Zusätzlich müssen Sie dann noch auf dem Reiter "Felder / Datentypen" den Primary Key nur auf das Feld "ERP Nummer" umbiegen. Feld anklicken und die Option "Primary Key" aktivieren bzw. deaktivieren.

Hinweis: Hiermit wird das Tabellenschema nicht verändert, Sie teilen dem FlowHeater damit lediglich mit anhand welcher Werte er evtl. Update SQL Statements generieren muss bzw. wie in diesem Fall prüfen soll ob ein Wert bereits vorhanden ist.

Falls das Ihr Problem nicht löst, können mittels des Lookup und If-Then-Else Heaters noch wesentlich komplexere Filter Kriterien gebastelt werden. Gerne erstelle ich Ihnen dazu auch ein kleines Beispiel.
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: Überprüfung (If then else) 5 Jahre 10 Monate her #272

  • Felix Höning
  • Felix Hönings Avatar
  • Offline
  • New Member
  • Beiträge: 6
Hallo Herr Stark,

leider meinte ich das genau andersherum.
Ich möchte die Daten der Write Seite mit den der Read ergänzen falls dieser Artikel in beider vorhanden ist aber die Zusatz Info auf der Write Seite Fehlt.
Beispiel:

ERP Nummer 100 auf beiden Seiten vorhanden
dann schau ob auf der Read Seite der Datensatz Höhe, Breite, Tiefe vohanden ist, wenn nicht dann schreibe diese Daten von Read nach Write.

ERP Nummer 101 nur auf Read vorhanden
dann nichts unternehmen.

ERP Nummer 102 nur auf Write Seite vorhanden
dann nichts unternehmen.

ERP Nummer 103 auf beiden Seiten vorhanden
und die Höhe, Breite, Tiefe auch vorhanden
dann nichts unternehmen.

Wenn Sie mir dazu ein Beispiel erstellen könnten wäre ich Ihnen sehr Dankbar.
Habe auch gerade von ihnen den Lizenzschlüssel erhalten, und muss nun die Daten konvertieren.

Gruß Felix
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Überprüfung (If then else) 5 Jahre 10 Monate her #274

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Höning,

2. Versuch :)

Das Beispiel finden Sie in der Anlage.update_lookup.zip
Hier habe ich eine kleine Access Datenbank (erp.mdb) mit der Tabelle t_ERP angelegt. Ich habe Ihre oben beschriebenen Daten verwendet. In der Tabelle t_ERP sind weitere Felder vorhanden, es werden lediglich die Felder Höhe, Breite, Tiefe aktuallisiert!

Im Beispiel sind 2 Filter Heater vorhanden. Der 2. Filter Heater (in der Definition unten) würde in dem Beispiel nicht gebraucht werden. Hier wird lediglich geprüft ob die ERP Nummer der READ Seite auf der WRITE Seite vorhanden ist. Ist das nicht der Fall wird die aktuelle Zeile/Datensatz durch den FlowHeater gefiltert. Das gleiche Resultat erzielen Sie wenn Sie auf der WRITE Seite die Option Insert deaktivieren und nur Update aktivieren.

Zur Prüfung ob die ERP Nummer vorhanden ist und Höhe, Breite, Tiefe noch nicht gesetzt sind.
Hierzu werden erst einmal 3 Lookup Heater verwendet, die die Werte für Höhe, Breite, Tiefe auslesen. Die Ergebnisse daraus wandern in einen String Append Heater. Der Heater erzeugt daraus lediglich eine Zeichenkette der eingehenden Werte. Diese Zeichenkette wandert dann in einen If-Then-Else Heater wo diese Zeichenkette auf ungleich Leere Zeichenkette geprüft wird. Trifft die Bedingung zu wurden in wenigsten ein Feld für Höhe, Breite, Tiefe bereits ein Wert eingetragen, die Zeile, der Datensatz wird gefiltert.

Anhang update_lookup.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: Überprüfung (If then else) 5 Jahre 10 Monate her #275

  • Felix Höning
  • Felix Hönings Avatar
  • Offline
  • New Member
  • Beiträge: 6
Hallo Herr Stark,

danke für Ihre schnelle Antwort, konnte leider dies noch nicht testen. Aber Ihr Beispiel funktioniert.
Um dies für meine Tabelle anzuwenden muss ich erst noch die ERP Nummer zu meiner Write Seite hinzufügen.
Habe dazu eine andere Tabelle wo ich eine Bestellbezeichnung habe die auch auf der Write Seite vorhanden ist.
Nun möchte ich wenn die Bestellbezeichnung gleich ist, von der Read Seite die Kundennummer zur Write Seite ERP kopieren.

Ich habe leider noch nicht ganz verstanden die die Filter und Lookups funktionieren.

Können Sie mir hierfür noch mal eine Anleitung zu Verfügung stellen.

Gruß Felix
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Überprüfung (If then else) 5 Jahre 10 Monate her #276

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Höning,

die Verarbeitung geht immer von links nach rechts. Ich beschreibe das jetzt mal anhand der zweiten Filterbedingung im Beispiel. Die ERP Nummer brauchen Sie nicht in die WRITE Seite aufnehmen, der Lookup Heater kann auch auf andere Tabellen der READ/WRITE Seite zugreifen.

Pro Datensatz/Zeile wird folgendes aufgerufen:
  1. Der Lookup Heater erhält als 1. Paramater die aktuelle ERP Nummer zugeteilt
  2. Anhand der gemachten Vorgaben im Lookup Heater wird folgender select ausgeführt
    select erp from t_erp where erp = '100'
    Wenn Sie hier die andere Tabelle verwenden, wird die ERP Nummer auch in dieser Tabelle gesucht!
  3. Der Wert dieser Abfrage wird zum If-Then-Else Heater weitergereicht. Hier wird geprüft ob der WERT DBNULL bzw. NULL ist. Sie wollten ja prüfen ob der Wert vorhanden ist.
  4. Anhand dieser Bedingung wird entweder JA/TRUE/1 oder NEIN/FALSE/0 an den Filter Heater weitergereicht. Schauen Sie sich hierzu mal die Hilfe zum If-Then-Else Heater an.
  5. Der Filter Heater entscheidet nun lediglich anhand des Wertes ob die Zeile gefiltert wird oder nicht.
    JA/TRUE/1 = die Zeile/der Datensatz wird gefiltert
    NEIN/FALSE= = die Zeile/der Datensatz wird normal verarbeitet

Beim Wert 100, würde der Lookup Heater DBNULL liefern = (in der Datenbank nicht vorhanden) dies wandert zum If-Then-Else. Hier wird geprüft "ist der Wert vom Lookup Heater = (gleich) DBNULL" und es wird TRUE an den Filter Heater weitergereicht. So wird der Datensatz gefiltert bzw. nicht weiter verarbeitet.

Werte nur Updaten wenn anderer Wert vorhanden ist.
Hierzu habe ich Ihnen wiederum 2 kleine Beispiele erstellt, siehe Anlage update_mit_bedingung.zip

Hier wird die Bezeichnung in einer Tabelle gesucht, nur wenn diese gefunden wurde wird die Kundennummer auf der WRITE Seite gesetzt bzw. aktualisiert.

Der Lookup Heater sollte jetzt klar sein. Schauen Sie sich den ersten If-Then-Else Heater an. Hier sehen Sie, dass der Heater einen 2. Eingangsparameter hat. Dieser Parameter wird zurückgeleifert wenn die Bedingung zutrifft. Der Ausgang wandert dann zum Feld Kundennummer der WRITE Seite. Ist die Bedingung "Wert vom Lookup Heater != (ungleich) DBNULL" wird das Feld Kundennummer zur WRITE Seite durchgereicht. Wurde der Wert nicht gefunden, wird auf der WRITE Seite der Wert auch nicht gesetzt bzw. verändert. Sie können Sich das mal anschauen, indem Sie die erste Beispieldefinition im Testmodus mal ausführen. Hier sehen Sie den Eintrag [FH:not set] bei der ERP Nummer 400. Schauen Sie sich auch mal das SQL Skript an, hier sehen Sie, dass hierfür kein SQL Update Statement erzeugt wurde. Wenn Sie aus dieser Definition den X-Value Heater mal löschen und anschließend die Definition erneut starten werden Sie feststellen, dass due Fehlermeldung "Die Update Anweisung hat keine Daten generiert …" erscheint. Dies hat den Grund, dass hier in dem Beispiel bei der ERP Nummer 400 weiter keine geänderten Daten vorhanden sind.

In der 2. Definition lasse ich diese Zeile/Datensatz wiederum über den Filter Heater filtern, so dass keine Fehlermeldung erscheint.

Anhang update_mit_bedingung.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: Überprüfung (If then else) 5 Jahre 10 Monate her #277

  • Felix Höning
  • Felix Hönings Avatar
  • Offline
  • New Member
  • Beiträge: 6
Hallo Herr Stark,

ich komme leider nicht voran. Ich schaffe es nicht die ERP Nummer auf die Write Seite zu schreiben.
Es soll wenn die "Bestellbezeichnung" auf Read und Write gleich ist die "Kundennummer" von Read nach "ERP" Write geschrieben werden.
Es kommt immer die Fehlermeldung "Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben"

Können Sie mir noch mal eine Hilfestellung geben.
Wenn ich das verstehe dann bekomme ich auch meine anderen Aufgaben hin.

Gruß Felix
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Überprüfung (If then else) 5 Jahre 10 Monate her #278

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Bitte posten Sie mal ihre .FHD Datei.

Achtung: Daten bitte vorher zippen, andere anlagen als .ZIP (außer Bilder) sind nicht erlaubt!
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: Überprüfung (If then else) 5 Jahre 10 Monate her #279

  • Felix Höning
  • Felix Hönings Avatar
  • Offline
  • New Member
  • Beiträge: 6
Habe den Anhang vergessen.
Sorry
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Überprüfung (If then else) 5 Jahre 10 Monate her #280

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Höning,

es fehlt leider immer noch die Anlage :)

Sie müssen die Daten vorher zippen! andere Anlagen als .ZIP (außer Bilder) sind nicht erlaubt!
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: Überprüfung (If then else) 5 Jahre 10 Monate her #281

  • Felix Höning
  • Felix Hönings Avatar
  • Offline
  • New Member
  • Beiträge: 6
Ich bekomme die Zip Datei nicht hochgeladen.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Überprüfung (If then else) 5 Jahre 10 Monate her #284

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Höning,

Ihre If-Then-Else Bedingung sowie der Lookup Heater waren völlig korrekt. Das Problem bei Ihrere Defintion ist, dass Sie den Primary Key auf die ERP Nummer umgebogen haben und versuchen dann diese ERP Nummer zu aktuallisieren.

Der FlowHeater kann keine Felder die als Primary Key definiert sind aktuallisieren. Diese Felder werden bei Updates lediglich zum bilden der WHERE Klausel verwendet.

Um Ihre Aktuallisierung durchzuführen habe ich Ihre Defintion etwas angepasst (s. Anlage). Hier wird zusätzlich noch geprüft ob die Bestellbezeichnung NULL/DBNULL ist. Ist dies der Fall wird die betroffene Zeile gefilter.

Zusätzlich holt ein zweiter Lookup Heater anhand der Bestellbezeichnung die ID des aktuellen Datensatzes und stellt diese Information ins Feld ID um daraus die WHERE Klausel für das Update generieren zu können.

z.B.
update geometrie set erp = 'neuer wert' where id = 1

Anhang ERP_Nummer_ergnzen.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.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.099 Sekunden