Home Forum Nuclos Entwicklung Makros und Regeln MasterDataDelegate viel zu langsam Aw: MasterDataDelegate viel zu langsam

#4443
Yves Hoeppe
Teilnehmer

Danke für die Antwort.
Also hier ganz konkret die Beschreibung:

Die Funktionalitäten Direktimport/Standardimport benutze ich dafür, um die Bestandsdaten aus dem jetzigen System in Nuclos einzufügen. Hierbei bin ich jetzt ganz gut gefahren, indem ich mir zwei nahezu identische Definitionen für ein und dieselbe Entität angelegt habe, mit dem einzigen Unterschied, dass die eine Definition den Direktimport, die andere den Standardimport benutzt. Ich lasse den Standardimport so lange durchlaufen, bis alle Abhängigkeiten geprüft wurden. Dann breche ich ihn ab. Bei den Prüfungen treten in der Regel zunächst Fehler auf. Ich bereinige dann nach und nach die zu importierenden Daten um ihre Fehler. Laufen die Plausibilitätsprüfungen am Anfang des Standardimports dann irgendwann ohne Fehler durch, benutze ich den Direktimport, um die Daten dann tatsächlich einzuspielen. Das funktioniert also ganz gut.

Der 2. Schritt ist, dass ich Daten von Lieferanten bekomme. Diese Daten sind unterschiedlich formatiert (unterschiedliche csv-Definitionen, feste Feldlänge usw.) und je nach Sortiment fällt die Datenmenge unterschiedlich groß aus. Diese Daten werden in eine temporäre DB-Tabelle eingetragen. Leider können nicht alle Felder der DB-Tabelle durch die bloßen CSV-Inhalte bestückt werden. Manche Felder ergeben sich aus Substrings anderer Felder. Manche Felder müssen zusammengesetzt werden usw. Da gibt es nichts, was es nicht gibt. Deswegen habe ich eine Klasse geschrieben und ins Nuclos-Menü eingebunden, die zwischen den verschiedenen Formaten differenziert und die fehlenden DB-Felder „berechnet“… Anschließend werden die Daten in eben diese temporäre Tabelle weggeschrieben. An der Stelle benutze ich eben die MasterDataDelegate-Funktionen und das dauert ziemlich lange.

Unproblematischer ist der 3. Schritt, bei dem die Felder aus der temporären Tabelle in einer Maske den bereits vorandenen Daten gegenüber gestellt werden. Der Benutzer legt zunächst fest, welche Felder der bereits vorhandenen Daten überschrieben (aktualisiert) werden sollen. Es werden dann alle Artikel durchgegangen. Nur wenn ein neuer Wert vom zugehörigen alten Wert abweicht, muss der Benutzer eingreifen und überhaupt ein Datensatz aktualisiert werden. Daher ist das also nicht das zeitkritische Problem.

Zeitkritisch ist eigentlich nur Schritt 2.