Mehrere Exports aus Dataport

22. Januar 2009 11:28

Hallo,
ist es möglich über einen Dataport gleichzeitig mehrere Exporte als *.csv Datei zu erstellen?

folgender Sachverhalt:
Momentan ist es so, dass ich über einen Dataport vier *.csv-Dateien erstellen kann, einzeln, bzw. manuell nacheinander gestartet. Die zu exportierende Datei wird mittels Option Button in der Request Form gewählt und mit einem „CASE OF … TRUE: BEGIN“ in die jeweilige Funktion geleitet.

Ich würde nun gern versuchen, alle vier csv-Exports mit einem Durchlauf zu erhalten. Habe da auch schon gebastelt und als Resultat erhalte ich die drei ersten *.csv-Dateien erstellt – jedoch leider leer – ohne Inhalt sowie die letzte *.csv-Datei, welche korrekt erstellt wird.

Kann mir jemand einen Ansatz nennen, wie ich diesen Export trotzdem zum laufen bringen kann?

Für jeden Ratschlag bin ich dankbar.

Gruß Alex

Re: Mehrere Exports aus Dataport

22. Januar 2009 14:14

Ich hab da mal was gebaut vor einigen Jahren. Die Funktion CloseAndCreateNewFile() macht genau was der Name sagt. Ermittelt aus einem Basisdateinamen (OriginalFilename) einen neuen Namen (durch anhängen eines übergebenen Teils an den Basisnamen). Die Funktionen zur Zerlegung des Pfads müsstest du ggf. nachprogrammieren, je nachdem wie deine Anforderungen sind.

Ansonsten wird weiterhin die aktuelle Dateiname ermittelt, diese Datei geschlossen, neu geöffnet und bei Länge > 0 um 2 Byte gekürzt. Den Teil müsstest du ggf. nochmal für dich prüfen. Eventuell stört dich auch, dass eine vorhandene Datei mit gleichem Namen gelöscht wird...

Im meinem Fall wurde die Funktion immer im OnPreDataItem() Trigger aufgerufen, um eine neue Datei anzulegen.

Code:
CloseAndCreateNewFile(NewName : Text[250]) : Text[250]
IF NewName <> '' THEN BEGIN
  Path := cuGenFuncs.GetFilePath(CurrFile.NAME);
  Ext := cuGenFuncs.GetFileExt(OriginalFilename);
  Name := COPYSTR(OriginalFilename, 1, STRLEN(OriginalFilename) - STRLEN(Ext) - 1);

  CompleteNewName := cuGenFuncs.AddPath(Path, Name + '_' + NewName + '.' + Ext);
END ELSE BEGIN
  CompleteNewName := Filename;
END;

LastFileName := CurrFile.NAME;
CurrFile.CLOSE;
CurrFile.OPEN(LastFileName);
IF CurrFile.LEN > 0 THEN BEGIN
  CurrFile.SEEK(CurrFile.LEN - 2);
  CurrFile.TRUNC;
END;
CurrFile.CLOSE;

IF EXISTS(CompleteNewName) THEN
  ERASE(CompleteNewName);

CurrFile.CREATE(CompleteNewName);

Re: Mehrere Exports aus Dataport

22. Januar 2009 14:22

Sehr schön, danke dir.

Werde es gleich mal in meinem Dataport anpassen.