[gelöst]Dataport Fields per Code deaktivieren

21. April 2010 14:02

Hallo zusammen,

ich habe mal eine Frage zu den Dataport Fields in einem Dataport, und zwar geht es darum das ich diese
per Code deaktivieren möchte.
Dem Anwender soll es möglich sein, von der Requestform aus steuern zu können welcher Satzaufbau für einen Import
gewählt werden soll.
Kann mir hier vielleicht jemand einen Denkanstoß geben?

Danke & Viele Grüße

John
Zuletzt geändert von John Wayne am 21. April 2010 15:45, insgesamt 1-mal geändert.

Re: Dataport Fields per Code deaktivieren

21. April 2010 14:13

Ich denke das es nur über Variablen möglich ist.
Aber heir der eigentliche Denkanstoss:
- Alle Felder mit Variablen belegen (ein TextArray geht oft ganz gut).
- Im OnAfterImport dann zu ordnen
Beispiele:
a) Satzaufbau: ItemNo,NewDescription,UOM,NewDescription2
b) Satzaufbau: ItemNo,NewDescription,NewDescription2
Code:
CASE Satzaufbau OF:
  Satzaufbau::a : BEGIN
    Item.GET(MyField[1]);
    Item.Description := MYField[2];
    Item.Description2 := MyField[4];
    Item.UOM := MyField[3];
  END;
  Satzaufbau::b : BEGIN
    Item.GET(MyField[1]);
    Item.Description := MyField[2];
    Item.Description2 := MyField[3];
  END;
END;

Re: Dataport Fields per Code deaktivieren

21. April 2010 14:24

Danke erstmal für die schnelle Antwort.
Würde dieser Lösungsweg nicht bedeutet das z.B. die TXT die ich importieren möchte immer den selben Satzaufbau hat?

Ich probiere mein Problem noch einmal genauer zu schildern:

Angenommen ich habe 2 TXT's

1.TXT

Kunde,Auftragsnummer,Datum,Ausgleichsbeleg

2.TXT

Kunde,E-Mail


Im Dataport selbst habe ich alle Felder als Dataport Fields angelegt,
beim Import möchte ich jetzt über die RequestForm wählen können welche
Felder nun aktivert werden sollen z.B. über Radiobutton1 --> Kunde,E-Mail
und einen 2. Radiobutton für den 2. Satzaufbau.

Ich hoffe ich konnte es ein bischen besser beschreiben.

Viele Grüße

John

Re: Dataport Fields per Code deaktivieren

21. April 2010 14:34

Ich denke nicht das es funktioniert wenn du die DataportFields direkt anlegst.
Nimm dir ein TextArray MyField und trage das in die ersten vier DataportFields ein.
Field[1]
Field[2]
....
Wenn dann ein Datensatz nur 2 Felder hat, werden auch nur die ersten beiden befüllt un der Rest ignoriert.
Im Code von OnAfterImport hinterlegst du dann wie die Daten in deine Tabelle einsortiert werden sollen.
z.B.
Code:
IF Satzbau = 1 THEN BEGIN
  // ordne Kunde, Auftragsnummer, .... einem DAtensatz zu
END;
IF Satzbau = 2 THEN BEGIN
  // Ordne Kunde und E-Mail einem Datensatz zu
END;

Re: Dataport Fields per Code deaktivieren

21. April 2010 15:44

Super, danke für den Tipp :-)