PDA

View Full Version : AS Datei nach PC in Excelformat OHNE CA/ODBC



synus
02-09-04, 16:25
Hallo Leute HELP

ich bin am verzweifeln, versuche seit ein paar Stunden das Problem zu lösen. habe versucht und probiert, habe das Forum durchsucht und gelesen, aber njet

Problem:
Ich muss eine normale AS400 Datei mit Feldern auf den PC in eine Excel oder CSV Format transferieren.
Client Access und ODBC steht NICHT zur Verfügung.

Ich habe es mit CPYTOPCD, CPYTOIMPF, CPYTOSTMF , und FTP versucht.
Ich kriege es einfach nicht hin dieses Format. hat mir jemand einen Tip mit welchem Befehl es klappen könnte ?

Vielleicht sehe ich vor lauter Bäumen den Wald nicht mehr.

Bin für jeden Strohalm dankbar

Vielen Dank
Synus

Fuerchau
02-09-04, 16:40
CPYTOIMPF ist da schon der richtige Weg.
Man darf sich nicht daran stören, dass bei numerischen Werten die Leerzeichen nicht entfernt werden. Excel kommt damit dann zurecht.

Die 2. Möglichkeit ist dann per SQL:

select trim(Fld1) || ';' || char(NumFld) || ';'
from file
where ...

Das dann als QM-Query und mit STRQMQRY in eine Datei ausgeben.
Diese Datei dann per CPYTOIMPF ins IFS-Stellen.

Bei der Ausgabe darauf achten:
*STDASCII ist CP 850 (DOS)
*PCASCII is CP 1252 (Windows)

RobertMack
02-09-04, 17:08
Hallo Synus,

falls Du den gleichen Weg regelmäßig gehen mußt, kannst Du Dir auch eine Zwischendatei per DDS erstellen:

A FELD1 8S 0 COLHDG('Feld1')
A SEP01 1 DFT(X'BB') COLHDG(' ')
A FELD2 2S 0 COLHDG('Feld2')
A SEP02 1 DFT(X'BB') COLHDG(' ')
A FELD3 15 COLHDG('Feld3')
A SEP03 1 DFT(X'BB') COLHDG(' ')
A FELD4 8S 0 COLHDG('Feld4')
A SEP04 1 DFT(X'BB') COLHDG(' ')
...

Durch einen CPYF mit *MAP/*DROP werden die Seperatoren gesetzt,
anschließend einfach den CPYTOSTMF mit dieser Zwischendatei ausführen...

Gruß,
Robert

synus
02-09-04, 17:14
hallo fuerchau
habe es mit CPYTOIMPF versucht folgender Befehl

CPYTOIMPF FROMFILE(P400MISPAN/SUNETA) TOSTMF('/qdls/sadta/test02.xls') MBROPT(*REPLACE) STMFCODPAG(*PCASCII) RCDDLM(*CRLF) DTAFMT(*FIXED) STRDLM(';') FLDDLM(';')

leider wird der gesamte Datensatz im Excel in eine Spalte reingestellt und nicht je feld eine Spalte

Was mache ich noch falsch ?

Danke

RobertMack
02-09-04, 17:35
Synus,

zum Einen muß der Parameter DTAFMT(*DLM) lauten, zum Anderen solltest Du die Datei als .txt ablegen, damit Excel bei Aufruf den Assistenten startet ...

Gruß,

Robert

Fuerchau
02-09-04, 19:42
Desweiteren solltest du QDLS nicht mehr verwenden, sondern die Datei in ein Unterverzeichnis von "/home" ausgeben.
Vorteil:
Unterstützung von CP 1252 (Umlaute und co), lange Dateinamen.
Eine Freigabe über den OpsNav ist genauso möglich.

Verzeichnisse kannst du über "wrklnk '/home'" verwalten, anlegen, löschen, berechtigen. Die Befehle MKDIR CHDIR usw. funktionieren auch auf der AS/400.

Andreas Herzfeldt
02-09-04, 20:07
Hallo Synus,

such bei Google nach CRTCSVDTA und Du findest ein prima Tool um Dateien der AS/400 als Datei oder STMF im CSV-Format für EXCEL lesbar zu erstellen.

Andreas

KM
03-09-04, 07:00
Hallo Synus,
suche im Internet mal nach dem Tool SQL2XLS auf der Seite von MCPRESSONLINE. Das benutze ich und es ist kostenlos. Damit kannst Du direkt XLS-Dateien erstellen ohne den Umweg über CSV. Außerdem kannst Du in einer SQL-Anweisung angeben, welche Datensätze Du überhaupt selektieren willst.

Gruß,
KM

synus
03-09-04, 07:16
Vielen Dank an alle für die guten tipps
werde heute mal alle ausprobieren

@RobertMack
Bei DTAFMT bringt er mir die fehlermeldung
"Die Begrenzer für DTAFMT(*DLM) sind nicht gültig."

Danke
synus

Fuerchau
03-09-04, 07:50
Achtung: STRDLM(';') ist FALSCH !!!
Mit STRDLM wird eine Zeichenkette z.b. in " gesetzt, da diese ja das FLDDLM enthalten könnte.
Entweder STRDLM(*NONE) oder STRDLM('"') angeben, dann passt auch DTAFMT(*DLM) !