CSV Datei mit Dataport importieren

17. Februar 2015 11:00

Hallo zusammen,

vielleicht kann mir jemand bei folgendem Problem helfen:

Ich importiere regelmäßig eine CSV-Datei mit Adress Stammdaten aus einem Fremdsystem in eine NAV Tabelle.
Nun kommt es hin und wieder vor, das die Anzahl der Zeichen in einem Feld der CSV-Datei größer ist, als das empfangende Feld in NAV.
Dadurch bricht der Dataport natürlich mit einer entsprechenden Fehlermeldung, wie z.B. ("Der Text ..... ist zu lang. Text darf maximal eine Länge von 50 Zeichen haben") ab.
Ich möchte nun in dem Dataport alle Felder der CSV-Datei vor dem Import auf die maximal erlaubte Anzahl Zeichen kürzen, damit es zu keinem Abbruch mehr kommen kann.
An welcher Stelle und mit welchem Befehl kann ich das realisieren?

Vielen Dank schon mal für eure Hilfe!

Gruß
Herbert

Re: CSV Datei mit Dataport importieren

17. Februar 2015 12:37

Hallo Herbert,

hinter den Dataport Fields gibt es den Trigger OnBeforeEvaluateField.
Dort kannst du den empfangenen Text abfangen, bevor er in das Zielfeld bzw. die Zielvariable übertragen wird.

Mein Vorschlag:
Code:
Text := COPYSTR(Text,1,MAXSTRLEN("DeinFeld")); 
Damit passt sich der Programmcode quasi automatisch an, falls bei einem Feld mal die Feldlänge geändert würde.

Re: CSV Datei mit Dataport importieren

17. Februar 2015 13:54

Hallo Timo,

vielen Dank für Deine Hilfe.
An dieser Stelle habe ich auch schon "rumprobiert".
Folgenden Code habe ich im OnBeforeEvaluateField Trigger des Feldes "STMNAME1" hinterlegt:

STMNAME1 := COPYSTR(STMNAME1,MAXSTRLEN(Name));

Das Feld in der empfangenden NAV Tabelle heißt "STMNAME1" und hat eine Länge von 50 Zeichen.
Die Variable im Dataport heißt "Name" und hat ebenfalls eine Länge von 50 Zeichen.
Trotzdem bricht der Dataport mit der Meldung ".... Text zu lang ..." ab.

Gruß
Herbert

Re: CSV Datei mit Dataport importieren

17. Februar 2015 13:59

Entschuldigung der Code heißt natürlich ...


STMNAME1 := COPYSTR(STMNAME1,1,MAXSTRLEN(Name));

Re: CSV Datei mit Dataport importieren

17. Februar 2015 14:03

So wie es Timo geschrieben hat.
In dem OnBeforeEvaluateField Trigger von dem Dataport Field.

Code:
Text := COPYSTR(Text,1,MAXSTRLEN(Name)); 


Also "Text" und nicht "STMNAME1" nehmen.

mfg,
winfy
Zuletzt geändert von winfy am 17. Februar 2015 14:06, insgesamt 1-mal geändert.

Re: CSV Datei mit Dataport importieren

17. Februar 2015 14:05

herb61 hat geschrieben:STMNAME1 := COPYSTR(STMNAME1,MAXSTRLEN(Name));

Das Feld in der empfangenden NAV Tabelle heißt "STMNAME1" und hat eine Länge von 50 Zeichen.
Die Variable im Dataport heißt "Name" und hat ebenfalls eine Länge von 50 Zeichen.
Trotzdem bricht der Dataport mit der Meldung ".... Text zu lang ..." ab.


Nimm für Name Txt 1024, dass die Inhalte erstmal reinpassen.
Also STMNAME1 := COPYSTR(NAME,1,MAXSTRLEN(STMNAME1));

Re: CSV Datei mit Dataport importieren

17. Februar 2015 14:21

Vielen Dank für euer Hilfe!

Es hat jetzt funktioniert!

Timos Lösung war schon perfekt, nur hatte ich es nicht gleich verstanden.