PDA

View Full Version : CPYTOIMPF mit Zeichenfelder die nur nummerische Zeichen enthalten



Seiten : [1] 2

CHGVAR
13-06-17, 12:46
Hallo zusammen,
ich bitte dringend um Schnelle Hilfe.
Ich bekomme als Ergebnis eines relativ aufwendigen Prozesses eine DB2-Datei, die nun an einen Dienstleister als CSV versendet werden soll. Bisher hat das ein Dienst auf einem Server gemacht; dieser Server ist heute einen unerwartet Tod gestorben und ist auch nicht so schnell ersetzbar.
Jetzt dacht ich ganz clever, dass CPYTOIMPF mir die CSV liefert und ich diese dann per FTP
zum Ziel transportiere. So weit kein Problem, aber in dieser Datei sind einige Zeichenfelder, die linksbündig mit nummerischen Zeichen gefüllt werden und in EXCEL
so 4,05E+12 o.ä. aussehen und vom Dienstleister zurückgewiesen werden. Jetzt stehen hier im Forum div Möglichkeiten wie ich bei der Erstellung der DB2-Dateieinfluss nehmen kann um das zu verhindern. Und genau das geht hier nicht (zumindest nicht ohne großen Aufwand denn der Ermittlungsprozess gehört in einen zugekauften Softwarestack).
Gibt es eine Möglichkeit, über den CPYTOIMPF Einfluss darauf zu nehmen ?
Dazu muss noch gesagt werden, dass das ganze ein BATCH-Prozess werden muss denn
die Datengenerierung erfolgt mehrfach und unzyklisch. Bin V7R2 wenn das irgendwie hilft.

Vielen Dank im Voraus, ich weis mir keine Rat und es brennt.....

Fuerchau
13-06-17, 12:58
Das ist ein Problem von Excl, dass Zahlen eben grundsätzlich als Zahl umgewandelt werden.
Dabei gehen dann auch z.B. Vornullen o.ä. verloren.
Leider gibt es hier keine Lösung beim Export. Dies muss im Excel-Import passieren.
Ggf. musst du die Excel-Datei selber erstellen (z.B. per MS-Query) und dann diese weitergeben an Stelle der CSV. Dann spart sich der Abnehmer die Konvertierung in Excel.

CHGVAR
13-06-17, 13:16
Hallo Fuerchau,
schade, wäre ja auch zu einfach gewesen. MSQuery kenn ich jetzt gar nicht aber gäbe eine Möglichkeit wenn ich die DB2-Datei per SQL (INSERT o.ä. ) umpacke und dabei die betreffenden Felder wieder lesbar mache ? Und wenn ja, wie sähe ein solcher CMD aus ?

Robi
13-06-17, 13:18
in einem cl:

per runsqlstm

ALTER TABLE YourLib/YourFile ALTER COLUMN Dein_alpa_feld_mit_numerischen_daten SET DATA TYPE
CHARACTER (IST_Anzahl_plus_1) CCSID 273 NOT NULL;
update YourLib/YourFile set Dein_alpa_feld_mit_numerischen_daten = substr(Dein_alpa_feld_mit_numerischen_daten, 1, ALTE_FELDLÄNGE) concat 'A'

csv ausgeben
excel einlesen
mit excel das A wieder raus (Pc-Fredis fragen)


Robi

CHGVAR
13-06-17, 13:20
geht statt dem 'A' auch ein ' ' ?

Robi
13-06-17, 13:24
klar geht auch ein ' '
Das hat nur höchstwarscheinlich nicht den effect, das excel das als alpa erkennt und bringt dann nix
Ich gehe nicht davon aus, das dein alpa_Feld_mit_numerischen_Daten immer 100% mit Ziffern ausfgefüllt ist

Robi

Pikachu
13-06-17, 13:31
Versuche an eine csv-Datei zu kommen, mit der es geklappt hat, und sieh sie dir mit nem Editor an. Wie sind da die numerischen Werte enthalten? Sieh dir auch mal deine per CPYTOIMPF erstellte csv-Datei mit nem Editor an. Wie ist die Felddefinition (DSPFFD) der DB2-Datei?

Fuerchau
13-06-17, 13:40
Für Excel gibt es 2 Methoden:
a) Stelle vor einer Zahl ein einfaches Hochkomma
b) formatiere die Spalte als Text
Leerzeichen am Ende helfen da leider nicht. Zumal der Empfänger ja die Daten weiterverarzten will.

Aber es stellt sich mir schon die Frage welches Format denn die bisherige Datei hatte?

MS-Query in Excel heißt ganz einfach: Daten->Externe Daten->Neue Abfrage aus ODBC-Quellen

CHGVAR
14-06-17, 13:55
Vielen Dank für die schnellen Antworten. Es ist dann doch die aufwendige Variante geworden. Die DB2-Datei nehmen, per Programm in die betroffenen Felder links ein "A" zuzufügen (per RPG da Prüfalgorithmus notwendig), zurückschreiben und dann CPYTOIMPF. Hab mich mit dem Empfänger drauf einigen können, dass er das "A" wieder rausstringt (bei gleichen Bedingungen wie bei der Zufügung). EDV zu Fuß aber Hauptsache die Daten laufen erst mal wieder.

BenderD
14-06-17, 14:14
... warum kannst Du nicht in dem entsprechenden Feld überall ein einfaches Hochkomma vorne anfügen? Geht mit SQL als View und sollte dem Excel Wurscht sein.