Hello World 3, Testdaten mit festen Längen (FlatFile) generieren
Endlich mal was vernünftiges! Jetzt werden wir unsere Textdatei, die im CSV Format geschrieben wurde in ein FlatFile (Textdatei mit fixen Längen bzw. festen Breiten) umwandeln und zusätzlich eine fortlaufende Nummer anfügen. Zu guter letzt werden wir den TestData Adapter etwas mehr fordern und die Texte "Hello" und "World" aus einer zufälligen Liste auswählen lassen, fangen wir an.
Öffnen Sie die Definition HelloWorld2.fhd und speichern diese über Datei->Speichern unter mit dem Namen HelloWorld3.fhd ab. Öffnen Sie danach den Configurator vom TestData Adapter auf der Read Seite und wählen den Reiter "Felder / Datentypen" aus. Selektieren Sie das Feld "NewColumn1" und stellen die Generierungsmethode von None auf List (siehe rote Markierung). Tragen Sie in der Liste nacheinander die Worte "Hello" und "World" ein und verfahren Sie mit dem Feld NewColumn2 genauso. Dann Verlassen Sie den Dialog über den OK Button.
Ändern Sie die Feldnamen des WRITE Adapters nun von "Feld für Hello" auf "Zufall1" und das Feld "Feld von World" auf "Zufall2". Fügen Sie danach über das Kontextmenü des WRITE Adapter (rechte Seite) ein neues Feld hinzu und benennen es auf "ID" um. Wechseln Sie im Auswahlbereich für die Heater auf den Reiter Zahlen (siehe rote Markierung) und ziehen den Heater "AutoID" über Drag und Drop auf den Designbereich. Danach verbinden sie den soeben ausgewählten Heater mit dem Feld ID. Ihr Bildschirm sollte jetzt ungefähr wie rechts gezeigt aussehen.
Über eine Doppelklick auf den Heater AutoID öffnet sich der Konfigurationsdialog dazu. Hier können Startwert, Schrittweite und Dezimalstellen eingestellt werden. Default Werte sind 1 für Startwert und Schrittweite sowie 0 Dezimalstellen. Geben Sie hier für Dezimalstellen 2 an und für die Schrittweite zur Demonstration den Wert 1,23 an.
Führen Sie die Definition aus, die Ausgabe sollte ca. so aussehen:
world;WORLD;1,00
hello;HELLO;2,23
...
hello;WORLD;999,76
world;HELLO;1.000,99
world;HELLO;1.002,22
...
Hier ist das Geheimnis verborgen. Zahlen werden (wenn nichts anderes angegeben) immer nach der Einstellung des Write Adapters Formatiert. Spielen Sie hier etwas herum und beachten Sie wie sich die untere Ausgabe ganz Zufällig ändert. Wenn Sie fertig mit Staunen :-) sind beenden Sie den Dialog am besten mit Abrechen, damit die Änderungen nicht übernommen werden.
Markieren Sie dann das Feld ID und ändern über das Eigenschaftenfenster den Wert DataType von String auf Int für Ganzzahl. Führen Sie die Definition erneut aus, folgende Ausgabe sollte erscheinen.
hello;WORLD;1
world;HELLO;2
...
world;HELLO;999
world;WORLD;1.000
hello;WORLD;1.002
Jetzt haben wir die Nachkommastellen eliminiert aber Zahlen ab den Wert 1000 werden immer noch mit einem Tausendertrennzeichen formatiert. Wir könnten jetzt die Formatierung für Zahlen so ändern, dass Zahlen immer ohne Tausendertrennzeichen formatiert werden oder aber einfach im Eigenschaftenfenster vom Feld "ID" den Wert der Eigenschaft Format von "N" auf "0" stellen. Alternativ dazu könnten wir auch den Format Heater verweden. Ein Beispiel über die Zahlenformatierung finden Sie hier.
Eines müssen wir noch tun. Wir wollen ja eine Textdatei (Flatfile) mit fixen Längen bzw. festen Breiten generieren bzw. ausgeben. Öffnen Sie dazu erneut den Configurator des TextFile Adapters (rechts) und wählen hier unter Abgrenzung den Punkt "Feste Breite" aus. Weiter wollen wir in der ersten Zeile die Feldnamen ausgeben. Markieren Sie dazu lediglich die CheckBox "Erste Zeile enthält Feldnamen", das war´s.
Ziehen sie mit der Maus im unteren Bereich (siehe untere rote Markierung) die Felder so hin dass ihr Dialog ungefähr so aussieht wie rechts dargestellt.
Hinweis: Zum ziehen der Felder brauchen Sie lediglich die kleinen Dreiecke unten mit der Maus verschieben.
Führen Sie die Definition erneut aus und schauen sich das Ergebnis an. Beeindruckend wie einfach und simpel so etwas sein kann.
Hier das Ergebnis der Test Daten Ausgabe mit rechtsbündiger Formatierung des Feldes ID.
zurück zu den Beispielen oder weiter zu Hello World 1 Hello World 2


