[gelöst] Mehrere Dataports für selbe Tabelle

1. Dezember 2006 13:24

Hallo Leute, hab wiedermal ne Frage...

Ich habe mehrere Dataports, welche Daten von Textdateien ins Projekt Erfassungsjournal schreiben.
Wenn die Tabelle leer ist, funktioniert das ohne Probleme. Die Daten werden Zeile für Zeile importiert.
Code bei PreDataItem
Code:
IF "Job Journal Line".FIND('-') THEN
   Linjenr := "Line No." + 10000
ELSE;
   Linjenr := 10000;


Code bei AfterImportRecord
Code:
"Line No." := Linjenr;
VALIDATE("No.");
Linjenr := Linjenr + 10000;


Wenn ich jetzt aber einen andere Dataport ausführe, welcher in die gleiche Tabelle schreibt, funktioniert das nicht mehr. Es wird nur eine Zeile importiert, welche zuoberst erscheint und die vorherige ersetzt.
Wie kann ich bewerkstelligen, dass der Import die Daten in der ersten freien Zeile einträgt und keine bestehenden Zeilen überschreibt?
Wäre für Hilfe sehr dankbar...

Freundliche Grüsse
Marco
Zuletzt geändert von Marco am 4. Dezember 2006 12:56, insgesamt 1-mal geändert.

1. Dezember 2006 13:26

Ich würde sagen, der Fehler liegt im PreDataItem:
Statt FIND('-') schreibe FIND('+')

Im Übrigen hätte ich das so aufgebaut:

Code:
IF NOT "Job Journal Line".FIND('+') THEN
   Linjenr := 0
ELSE;
   Linjenr := "Line No.";



Code bei AfterImportRecord
Code:
Linjenr += 10000;
"Line No." := Linjenr;
VALIDATE("No.");

1. Dezember 2006 13:43

Wow, das ging ja schnell. Leider hats nichts gebracht. Weder "-" durch "+" ersetzen, noch den ganzen Code anpassen...
Vielen Dank trotzdem

Edit: Vielleicht ein bisschen undeutlich beschrieben. Ich habe viele Dataports mit alle demselben Code und Einstellungen, welche alle Daten ins "Projekt Erfassungsjournal" schreiben. Nur die Importdatei ist bei allen unterschiedlich. Ich möchte dann eigentlich mit einem Button alle Dataports nacheinander ausführen, was aber nicht geht, solange die Datensätze nicht am Schluss eingesetzt werden.

1. Dezember 2006 13:53

Ich möchte dann eigentlich mit einem Button alle Dataports nacheinander ausführen, was aber nicht geht, solange die Datensätze nicht am Schluss eingesetzt werden. --> was meinst du damit genau?

1. Dezember 2006 13:57

Ich nehme mal an, dass "Job Journal Line" auch der Name des DataItems ist.
Wenn dem so ist, solltest du die Prüfung im OnPreDataItem-Trigger mit einer lokalen Variable durchführen, also:

Code:
locJobJournalLine.RESET;
IF NOT locJobJournalLine.FIND('+') THEN
   Linjenr := 0
ELSE;
   Linjenr := "Line No.";

1. Dezember 2006 14:00

Eine Textdatei mit mehreren Zeilen zu importieren funktioniert dank des Codes im ersten Beitrag ohne Probleme. Eine zweite Textdatei zu importieren funktioniert nicht, solange das Projekt Erfassungsjournal nicht leer ist.
Jetzt muss ich:
Dataport1 ausführen, buchen.
Dataport2 ausführen, buchen.
Dataport3 ausführen, buchen. usw.

Ich möchte:
Dataport1 ausführen
Dataport2 ausführen
Dataport3 ausführen usw.
buchen

1. Dezember 2006 14:03

Hallo Marco!

Natalie's Vorschlag sollte schon funktionieren, wenn nicht, so liegt das Problem vielleicht wo anders!?
Könntest Du den Dataport in ein Textfile exportieren und hier posten?

1. Dezember 2006 14:18

Als Textdatei exportieren geht aufgrund der Lizenz nicht.
Ich habs mal als fob exportiert und verucht als Attachment hinzuzufügen.

Die Textdatei hätte z.B folgenden Inhalt:
Code:
Projekt;Standard;1;23.10.2006;43;Ressource;37;15;40-MONT;;;1
Projekt;Standard;2;23.10.2006;43;Ressource;37;25;20-EINKAUF;;;1
Projekt;Standard;3;23.10.2006;43;Ressource;37;4;20-EINKAUF;;;1


so, muss mal was essen. Danke für eure Hilfe
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

1. Dezember 2006 14:59

Hmmm ... also bei mir funktioniert's einwandfrei.
Der erste Import legt die Zeilen 10000 bis 30000, der zweite 40000 bis 60000, usw..
Hast Du die anderen Dataports auch angepasst? Und: Die geänderten Objekte wurden auch auf der "Entwicklungs-maschine" ausgeführt, von wegen "Object-Cache" Problem und Client Neustart?

P.S.: Lass es Dir schmecken :-)

1. Dezember 2006 15:16

Schade, sehr komisch...
Dachte auch, das müsste so eigentlich funktionieren. Wenn ich den Dataport, den ich upgeloadet habe, zweimal ausführe, sind bei mir trotzdem nur 3, statt 6 Zeilen im Journal.
Das wurde auf der Original-Datenbank auf dem Server getestet, sowie lokal auf einer Testdatenbank.
Naja, ich mach mal nen Neustart. Kann ja nie schaden...
Danke fürs testen!
Edit: Naja, wie erwartet hat der Neustart nichts genützt. Egal, ich probier noch nen bisschen rum und sonst solls halt unser Navision Distributor machen.

4. Dezember 2006 09:22

... und nochwas: Der Dataport darf nicht im Design-Mode via Strg+R ausgeführt werden, da dann kein COMMIT erfolgt, es werden immer nur 3 Zeilen angelegt ...

4. Dezember 2006 09:49

stryk hat geschrieben:... und nochwas: Der Dataport darf nicht im Design-Mode via Strg+R ausgeführt werden, da dann kein COMMIT erfolgt, es werden immer nur 3 Zeilen angelegt ...

Wird er nicht...
Habs mal mit der CRONOS Test Datenbank ausprobiert (hätt ich auch früher auf die Idee kommen können :oops: ) und dort gings auch. Muss also irgendwie mit den Anpassungen unseres Navision-Distributors zu tun haben. tstststs.... Ohne euch würde ich den Fehler immernoch beim Dataport vermuten.
Dankeschön

4. Dezember 2006 10:05

Wenn Du möchtest, könntest Du hier vielleicht die Tabelle 210 Job Journal Line als FOB posten, vielleicht liegts ja an 'ner Anpassung darin?

4. Dezember 2006 11:39

Danke für das Angebot. Ist aber schon gut, ihr habt mir schon genug geholfen :wink:
Ich hab das Problem unserem Distributor geschildert und der soll mir das jetzt lösen, schliesslich ist er auch für das Problem verantwortlich.
Gruess Marco

Update, Fehlerlösung

4. Dezember 2006 16:10

Salü Zusammen

Habe Nachricht vom Distributer bekommen. War doch mein Fehler...
Man musste noch einen Filter auf den Erfassungsjournalnamen setzten. Deshalb gings auch bei Cronos, da nur ein Standard Erfassungsjournalname vorhanden ist.