Seite 1 von 1

[gelöst] Dataport Feldlänge beim Import kürzen

Verfasst: 27. Juli 2006 10:09
von prassl
Hallo Community,

ich brauche Hilfe bei folgendem Problem:
Ich muss Kontakte aus einem CSV File über einen Dataport in die Kontakttabelle einlesen.

In besagtem CSV File, ist die Feldlänge für "Name" und "Name 2" 50 Zeichen, was nicht in die Kontakte importiert werden kann, da die Feldlänge dort 30 Zeichen beträgt.

Was ich im Moment versuche ist das EInlesen in eine Variable, dort die ersten 30 Zeichen abzuschneiden und manuell in die Kontakttabelle zu speichern.

In welchem Trigger muss ich das angehen ? (Das DEV 1 Manual nennt dazu Appendix G des Application Designer Guide, den ich nicht verfügbar habe...)

Ich versuche es momentan mit einer Record Variablen und mehreren textVariablen im onBeforeImportRecord() - fliege jedoch immer mit der Fehlermeldung dass die Feldlänge überschritten wird ...

Hat jemand von euch dazu eine Idee ?
ab wann genau (welcher Trigger) ist der zu importierende Record verfügbar ?
und wo und wie genau mache ich die notwendige Überprüfung ?
MIBUSO war hierzu leider nicht zu gebrauchen, da habe ich nichts dazu gefunden...

danke im Vorhinein
lg
Manuela

Verfasst: 27. Juli 2006 11:58
von rotsch
Hallo Manuela

Platziere den Cursor auf dem gewünschsten DataItem im Dataport. Dann rufst du über Ansicht die DataPortFields auf. Auf dem betreffenden Feld drückst du F9. Nun sieht du zwei Trigger. In OnBeforeEvaluateField kannst du nun die Variable Text auf die gewünschte Länge kürzen

Verfasst: 27. Juli 2006 16:21
von prassl
Hallo Roger,

vielen Dank für die Hilfe, das hat das ganze wesentlich vereinfacht.
Hier noch der Lösungsansatz, damit in Zukunft niemand mehr darüber stolpert:

globale Variablen:
Name DataType Subtype Length
tempstring Text 30
txtField Text 250

Trigger des betreffenden Dataport-Fields:
Feldname - OnBeforeEvaluateField(VAR Text : Text[1024])

Code:
tempstring := '';
txtField := Text;

IF (STRLEN(txtField) > 30) THEN BEGIN
   tempstring := COPYSTR(txtField, 1, 30);
   Text := tempstring;
END


Erklärung: nachdem der Parameter Text als VAR an den Trigger übergeben wird, kann sein Wert (call by reference, nicht call by value)
innerhalb des Triggers verändert werden

schönen Abend und danke nochmals
mlg
Manuela :-)

Re: [gelöst] Dataport Feldlänge beim Import kürzen

Verfasst: 20. April 2016 15:33
von Nav_in_Ulm
Vielen Dank, hat mir heute auch geholfen...