Anmelden

View Full Version : Problem beim Erstellen einer Exceldatei aus AS400-PF mit CVTPFXLS



Seiten : [1] 2

hs
08-03-06, 16:52
Hallo,

habe mir die Freeware CVTPFXLS auf die AS400 geladen. Funktioniert prima, um native eine AS400-PF in eine Exceldatei zu konvertieren und dann per Email zu vesenden.

Problem habe ich allerdings bei negativen Werten. Diese kommen in der Exceldatei positiv an!

Hat jemand eine Lösung für dieses Problem?

Danke
HS

Fuerchau
08-03-06, 17:27
Dann musst du das Freeware-Programm ändern oder eine andere Software einsetzen.

holgerscherer
08-03-06, 17:41
Dann musst du das Freeware-Programm ändern oder eine andere Software einsetzen.

Oder selbst schreiben ;-) Nachdem ich in letzter Zeit auch immer wieder Probleme mit dem CPYTOIMPF bei etwas grösseren Tabellen hatte (so ab 20Mio Sätzen), mache ich mir das .CSV doch lieber selbst mit RPG. Da weiss man, warum was nicht läuft, äh... warum es läuft.

-h

hs
08-03-06, 18:46
wie soll ich das Freewareprogramm ändern?

mk
08-03-06, 18:49
Hi Holger,


20 Mio Sätze -----------
toll das MS jetzt soviel kann

grins grins

Viele Grüße
Michael

holgerscherer
09-03-06, 00:00
wie soll ich das Freewareprogramm ändern?

Wenn Du den Quellcode hast und die entsprechende Sprache kannst... ansonsten, mal jemanden fragen ;-)

-h
(ja, ich weiss. Du fragst hier. Aber das ist etwas zu generell gehalten. Wenn Du eine total simple Variante brauchst, hast Du schon mal CPYTOIMPF probiert?)

holgerscherer
09-03-06, 00:01
20 Mio Sätze -----------
toll das MS jetzt soviel kann


LOL, wer spricht denn hier von MS? Die Daten landen auf einem (alten) SybaseSQL-Server, der damit ein paar Auswertungen auf PC-Hardware fährt. Man muss ja die arme iSeries-CPU nicht ständig auslasten.

-h

Fuerchau
09-03-06, 08:25
Wieso schreibt ihr eigentlich laufend Programme, wenn diese gar nicht benötigt werden (ausser einem kleinen CLP für regelmäßige Arbeit) ?

Z.B. CSV mit QM-Query:

select trim(fld1) concat ';' concat trim(fld2) concat ';' ...
concat trim(char(numfld)) concat ';' ...
from ...
where ...

Ich kann in dem Select mit CommonTableExpression, Join, Union, Group, Having usw. die Daten so lange am Bildschirm anzeigen, bis das gewünschte Ergebnis vorliegt.

Per STRQMQRY dann in Outfile und per CPYTOIMPF/CPYTOSTMF ausgeben.
An Stelle des ';' kann ich auch beliebige X'xx' verwenden.
Das Schöne daran ist, ich mache mir keine Gedanken über die maximale Satzlänge. Das macht SQL ganz automatisch.

hs
09-03-06, 08:53
Erstmal vielen Dank für alle Antworten.

Leider habe noch kein Lösung meines Problems gefunden, da ich

- weder die Source des Tools CVTPFXLS habe noch
- ein eigenes RPG, JAVA etc. Programm erstellen kann

Die vorgestellten Lösungen sind leider nicht universell einsetzbar. Ich benötige eine Möglichkeit, eine beliebige Datei
in Excel zu übernehmen. Natives Excelformat ist nicht notwendig. Auch das von mir verwendete Tool schreibt nur ein Textfile mit Trennzeichen, was in Excel aber problemlos (und ohne Rückfragen) geöffnet werden kann. Der User merkt gar nicht, dass er kein "echtes" Excelfile geöffnet hat.

Denke auch, dass dies mit Bordmitteln der AS400 (SQL, CPYTOIMPF etc.) ebenfalls grundsätzlich möglich sein sollte.

CPYTOIMPF hat aber den Nachteil, dass ich keine Feldbezeichnungen übernehmen kann. Mit dem Tool CVTPFXLS kann ich als Spaltenüberschrift sogar die Feldbeschreibung automatisch übernehmen. Feldnamen sind ja in der Regel wenig aussagekräftig.

Gibts da was mit SQL o.ä.?

Da heute denke ich praktisch jeder von uns Dateien ins Excel übernehmen muss, wäre eine Lösung sicher für alle von Nutzen!

Anbei das CL, welches ich heute für den Versand einer beliebigen AS400-Datei als Email und Excelattachment benutze.

Danke
HS

0001.00 /************************************************** ******************/
0001.01 PGM PARM(&LIB &PF &DATEI &EMAIL &NACHRICHT)
0001.03 /* DAS CL SCHICKT DIE ÜBERGEBENE DATEI PF AN DIE ÜBERGEBENE MAILADRESSE */
0001.04 DCL VAR(&EMAIL) TYPE(*CHAR) LEN(32) /*Mailadresse*/
0001.05 DCL VAR(&PF) TYPE(*CHAR) LEN(10) /*AS400-Datei*/
0001.06 DCL VAR(&LIB) TYPE(*CHAR) LEN(10) /*AS400-Bibliothek*/
0001.07 DCL VAR(&DATEI) TYPE(*CHAR) LEN(12) /*Mame der Exceldatei*/
0001.08 DCL VAR(&PFAD) TYPE(*CHAR) LEN(32) /*Ausgabefolder AS400 */
0001.09 DCL VAR(&NACHRICHT) TYPE(*CHAR) LEN(256) /*Text in Email */
0001.10 CHGVAR VAR(&PFAD) VALUE('/QDLS/TEMP/'!!&DATEI)
0001.11 /* wegen möglicher Leerzeichen in Bibilioheksname in benanntes File kopieren */
0001.12 CRTDUPOBJ OBJ(&pf) FROMLIB(&LIB) OBJTYPE(*FILE) +
0001.13 TOLIB(QTEMP) NEWOBJ(DAT) DATA(*YES)
0001.20 CVTPFXLS FROMFILE(QTEMP/DAT) TOSTMF(&PFAD) +
0001.21 FLDHDR(*TEXT) STRDLM('"')
0001.22 SNDDST TYPE(*DOC) TOINTNET((&EMAIL)) +
0001.23 DSTD(BESCHREIBUNG) MSG(&NACHRICHT) +
0001.24 DOC(&DATEI) FLR(TEMP)
0001.10 CHGVAR VAR(&PFAD) VALUE('/QDLS/TEMP/'!!&DATEI)
0001.26 DLTDLO DLO(&DATEI) FLR(TEMP)
0001.27 AULSYS/DLTOBJ OBJ(QTEMP/DAT) OBJTYPE(*FILE)
0002.00 ENDPGM
0001.00 /************************************************** ******************/

holgerscherer
09-03-06, 09:18
Wieso schreibt ihr eigentlich laufend Programme, wenn diese gar nicht benötigt werden (ausser einem kleinen CLP für regelmäßige Arbeit) ?


Lass uns doch wenigstens noch das Programm schreiben, um das SQL zu erstellen ;-) Man programmiert ja so wenig derzeit...

-h