09.11.2012 Aufrufe

CRM-EXPO 2002 - Midrange Magazin

CRM-EXPO 2002 - Midrange Magazin

CRM-EXPO 2002 - Midrange Magazin

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Technik & Integration<br />

CPYF aus Datumsfelder<br />

44 www.midrangemagazin.de November <strong>2002</strong><br />

Technik-Forum<br />

Sie sind nun wieder eingeladen, die Diskussion spezieller technischer Probleme mit zu verfolgen.<br />

Bitte schicken Sie Fragen, Anregungen oder Antworten zu den vorgestellten Themen – ebenso wie Ihre Kritik<br />

– an unsere eMail-Adressen dieter.bender@<strong>Midrange</strong><strong>Magazin</strong>.de oder Redaktion@<strong>Midrange</strong><strong>Magazin</strong>.de<br />

Frage: Wir haben in einer physischen<br />

Datei Felder im Datumsformat definiert<br />

und möchten aus einer bestehenden Datei,<br />

in der das Feld 8stellig numerisch<br />

definiert ist, den Inhalt mit CPYF kopieren.<br />

In den Feldern steht anschließend<br />

„Schrott“, oder wir bekommen Abbrüche.<br />

Ist das überhaupt machbar, oder<br />

müssen wir da ein Konvertierungsprogramm<br />

schreiben?<br />

Antwort: Eine automatische Übertragung<br />

beim CPYF kann nicht so ohne<br />

weiteres funktionieren, da das System ja<br />

nicht automatisch erkennen kann, wie<br />

das Feld zu interpretieren ist; also wo<br />

steht das Jahr, wo der Monat, wo der<br />

Tag, oder wie sonst ist das Datum zusammengesetzt.<br />

Für numerische Felder<br />

gibt es da keinerlei Regelwerk, alphabetische<br />

Felder sind eventuell noch interpretierbar,<br />

wenn sie Trennzeichen enthalten<br />

und sich an das Datumsformat<br />

des Jobs halten. Zudem ist bei all diesen<br />

Feldarten nicht sichergestellt, dass gültige<br />

Daten drinstehen. In Datumsfeldern<br />

create view bestellV as<br />

select bestellung_id, kunde,<br />

date(<br />

substring(char(datum), 5, 2) !! ‘.’ !!<br />

substring(char(datum), 3, 2) !! ‘.’ !!<br />

substring(char(datum), 1, 2)<br />

) as datum,<br />

bearbeiter<br />

from bestell<br />

Abbildung 1: Beispiel 1 einer SQL-<br />

Eingabe zum Kopieren von Datumsfelder<br />

in numerische Felder<br />

gibt es strengere Regeln, deshalb kann es<br />

auch zu Abbrüchen kommen.<br />

Eines Programms bedarf es zur Umsetzung<br />

nicht unbedingt, am einfachsten<br />

geht es mit SQL. Angenommen wir<br />

haben eine Datei BESTELL mit den<br />

Feldern BESTELLUNG_ID, KUNDE,<br />

DATUM und BEARBEITER; im Feld<br />

Datum steht für den 16.8.<strong>2002</strong> zum Beispiel<br />

der Wert <strong>2002</strong>0816 in einem numerischen<br />

Feld und wir wollen dies in<br />

eine gleich aufgebaute Datei kopieren.<br />

Zunächst erstellen wir uns eine logische<br />

Datei, am einfachsten mit SQL. Die<br />

SQL-Anweisung, die wir zum Beispiel<br />

nach STRSQL am interaktiven SQL-<br />

Prompt eingeben müssen, ist in Abbildung<br />

1 zu sehen.<br />

Für andere Datumsformate im Job müssen<br />

die Trennzeichen entsprechend geändert<br />

oder es müssen Komponenten<br />

umgestellt werden.<br />

Von dieser View kann man jetzt mit einem<br />

ganz gewöhnlichen CPYF kopieren;<br />

die Umsetzung wird von der View<br />

geleistet.<br />

Selbstverständlich funktioniert dieses<br />

Verfahren auch mit einem einheitlichen<br />

SQL-Statement ohne anschließendes<br />

Kopieren, dann wird auch keine View<br />

benötigt.<br />

Das SQL Statement hätte dann für unser<br />

Beispiel das Aussehen von Abbildung 2.<br />

Wenn die Datumsfelder Alfa-Felder<br />

sind, kann die Konvertierung nach<br />

„char“ weggelassen werden. Diese<br />

Statements sind leicht an andere Formate<br />

anzupassen.<br />

Den Autor Dieter Bender erreichen<br />

Sie unter<br />

> Dieter.Bender@<strong>Midrange</strong><strong>Magazin</strong>.de<br />

insert into bestellNeu<br />

(bestellung_id, kunde,<br />

datum, bearbeiter)<br />

select bestellung_id, kunde,<br />

date(<br />

substring(char(datum), 5, 2) !! ‘.’ !!<br />

substring(char(datum), 3, 2) !! ‘.’ !!<br />

substring(char(datum), 1, 2)<br />

) as datum,<br />

bearbeiter<br />

from bestell<br />

Abbildung 2: Beispiel 2 einer SQL-<br />

Eingabe zum Kopieren von Datumsfelder<br />

in numerische Felder

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!