Export von Kontakte per Dataport

17. August 2009 10:33

Hallo Zusammen,

Gibt es ein Möglichkeit mittel Dataport kontakte (Mandanten und deren Personen ) in eine Txt-Zeile zu schreiben statt sie aufzulisten?
(Form: 5052:Kontakt Übersicht)

Beispiel:
KT10123456 Muster GmBH
KT10234343 Person 1
KT10234344 Person 2
KT10234345 Person 3

in :

KONT10123456 Muster GmBH KONT10234343 Person1 KONT10234344 Person2 KONT10234345 Person3

also pro Datensatz(Mandant & Person) eine zeile gefolgt mit einem Zeilenumbruch.

vielen Dank im Voraus.

Re: Export von Kontakte per Dataport

17. August 2009 10:42

Wenn ich es richtig verstanden haben, müsstest du zunächst die Daten vorverarbeiten in einer Arbeitsdatei, und diese dann ausgeben.
Ich glaube dann könntest du die Daten auch gleich schreiben mit eine Variable vom Typ "FILE".

Re: Export von Kontakte per Dataport

17. August 2009 11:29

Hallo,

die Vorgenhensweise mit Variablen vom Typ "File" iust mir neu.
könntest du mir bitte ein Beispiel nennen?
es kann sein dass ich bisher nur einfache Dataport erstellt habe & dass ich teilweise C/Al code generieren müsste.
einen Zeilenumbruch Per C/Al zu erzeugen sollte kein Problem zu sein.
schwierigkeiten bekommen ich momentan wenn ich versucht habe (Nur mandaten & Personen )einer Zeile zu schreiben.

Danke.

Re: Export von Kontakte per Dataport

17. August 2009 12:35

Ungefähr so:
Im Dataport oder Report zunächst die Datei erzeugen (File.CREATE(Name) ) bzw. öffnen (File.OPEN(Name) ).
(Auf OnPreReport)

Auf dem OnAftergetRecord die Zeilen scheiben (FILE.WRITE()).

Zum Schluß die Datei schließen FILE.CLOSE auf dem OnAfterGetRecord

Code:
// Variablen:
Name         DataType   Subtype   Length
Verzeichnis   Text         250
FileName   Text         30
TextFile      File      
DateiOffen   Boolean   

Name         ConstValue
TXT0000012   Sie müssen ein Verzeichnis- / Dateinamen angeben.
TXT0000013   Die Datei '%1\%2' wurde erfolgreich erstellt.   

// OnPrereport
 IF (Verzeichnis = '') OR (FileName = '') THEN
    ERROR(TXT0000012);
 
  TextFile.QUERYREPLACE(TRUE);
  DateiOffen := TextFile.CREATE(Verzeichnis+FileName);

// OnAfterGetRecord
  IF DateiOffen THEN BEGIN
    TextFile.TEXTMODE(TRUE);
    File.WRITE('HierDeinText_oder_Variable');

// OnPostReport
    File.CLOSE;
    MESSAGE(TXT0000013,Verzeichnis,FileName);


Siehe auch in der Hilfe nach, hier werden die Befehle gut erläutert.
-->Natürlich gibt es hier im Forum auch reichlich Beiträge dazu :-)

Re: Export von Kontakte per Dataport

17. August 2009 16:53

prima geklappt..

Besten Dank Mikka :-D

Re: Export von Kontakte per Dataport

27. August 2009 17:47

Hallo,

also ich habe schon einen Dataport der mir Kontakte exportiert.
Meine Frage wie kann ich Sagen es sollen keine Doppelte E-Mail adressen Exportiert werden ?

Export Klappt ich möchte nur keine Doppelten Datensätze haben wie geht das ?

vielen dank für eure Hilfe.

Re: Export von Kontakte per Dataport

27. August 2009 18:06

matthaes hat geschrieben:Meine Frage wie kann ich Sagen es sollen keine Doppelte E-Mail adressen Exportiert werden?

Hallo matthaes,

prinzipiell ist das möglich, allerdings müsstest du hier tief in die Trickkiste greifen:

  1. Alle zu exportierenden Kontakte in eine temporäre Tabelle (z. B. TempContact) übertragen
    Beim Einfügen in diese temp. Tabelle prüfen, ob sich bereits einen Datensatz mit dieser E-Mailadresse in der temp. Tabelle befindet
  2. Nicht die Daten der realen Kontakt-Tabelle, sondern die der temp. Tabelle exportieren.
    Hierzu musst du ein Integer-Dataitem als Hilfskonstrukt verwenden, da du keine temp. Tabellen als DataItem verwenden kannst.

Re: Export von Kontakte per Dataport

27. August 2009 18:42

Okay,

wie würde der code aussehen um so etwas zu prüfen ?

Re: Export von Kontakte per Dataport

27. August 2009 19:43

matthaes hat geschrieben:wie würde der code aussehen um so etwas zu prüfen ?

Da es mir als Programmierer schwerer fällt, dies hier in Worte zu fassen, als es "mal eben" zu programmieren, anbei ein rudimentärer Dataport, an welchem du dich orientieren kannst.
Rudimentär, weil er nur zwei Felder exportiert, aber das ist ja nicht das Thema deiner Frage, von daher sollte das reichen.

Schau dir einfach den Programmcode in den DataItems, sowie die Properties des Dataports sowie der Globals an.
Zusätzlich habe ich die einzelnen Zeilen kommentiert, um zu verdeutlichen, was warum gemacht wird.

Habe ihn zwar in 2009 erstellt, er sollte aber auch in 5.0 importiert werden können.

Sicherheitshalber habe ich ihn als fob und als txt exportiert.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.