Mit dem Skriptmodul können Objekte in eine Excel Tabelle geschrieben werden.
Der Modul wird mit:
|INCL \script\xlsout.mod
in einer ICS RUN1-Konfiguration verfügbar gemacht.
Folgende Parameter können in der Map DB_PARAM für den Modul gesetzt werden:
| Parameter | req/opt | Beschreibung |
| o | ON oder OFF, Default = OFF. Für jedes gelesene Objekt eine Zeile ausgeben. |
Folgende Parameter können in der Map DBOUT_PARAM für den Modul gesetzt werden:
| Parameter | req/opt | Beschreibung |
CREATE_TABLE | o | ON, OFF,Default =
OFF. Definiert ob die Tables definiert mit
Record-Definitionen (siehe weiter unten) in der Datenbank erzeugt
werden sollen. Mit OFF werden die Tabellen
nicht erzeugt. Mit ON werden die Tabellen
erzeugt und zwar zum Zeitpunkt, wenn das erste Objekt in die
Tabelle geschrieben wird. Tables in die keine Objekte geschrieben
werden, werden auch nicht erzeugt. |
DELETE_OLD | o | ON, OFF oder
DROP, Default = OFF. Löscht
bestehende Daten in Tables definiert mit Record-Definitionen
(siehe weiter unten). Mit OFF werden keine
Daten gelöscht. Mit ON werden die Daten über
ein delete-sql-statement gelöscht. Mit DROP
wird die Table und damit die Daten gelöscht. Zusammen mit
DROP und dem Parameter CREATE_TABLE
=> ON werden die Tables gelöscht und wieder
erzeugt. |
BATCH | o | ON oder OFF, Default = OFF. Mit OFF werden die sql-statements direkt auf der Datenbank ausgeführt. Mit OFF werden die sql-statements in ein Batchfile geschrieben. Mit dem Parameter BATCH_FILE wird das Batchfile definiert. |
BATCH_OUTPUT_DIR | o | <directory>. Definiert ein
Output-Directory für Batchfiles. Mit diesem Parameter kann das
Output-Directory für Batchfiles definiert werden, falls der
Parameter BATCH = ON definiert ist. Batchfiles
können sein ein File mit SQL-Statementes oder in Kombination mit
dem Oracle Output Modul die SQLLOADER-Bulkfiles. Ist dieser
Parameter nicht gesetzt, so wird das Output-Directory aus einem
eventuellen Input-File definiert in OPT.input bestimmt. Ist kein
Input-File definiert, so ist das Output-Directory
iltools\data\ics.sql. |
BATCH_FILE | o | <file>. Definiert das Batchfile.
Mit diesem Parameter kann das Batchfile definiert werden, falls
der Parameter BATCH = ON definiert ist. Ist
dieser Parameter nicht gesetzt, so wird das Batchfile aus einem
eventuellen Input-File definiert in OPT.input mit der Endung .sql
bestimmt. Ist kein Input-File definiert, so ist das Batchfile
iltools\data\ics.sql als definiert. Das
Batchfile beinhaltet SQL-Statements, um die transferierten Daten
mittels SQL in eine Datenbank zu importieren. |
SQLTRACE | o | ON oder OFF, Default = OFF. Zeigt als sql-statements im Logfile an. |
STATISTICS | o | ON oder OFF, Default = OFF. Statistik anzeigen. |
DATASET | o | ON oder OFF, Default
= OFF. Definiert, ob die in die Datenbank
geschriebenen Daten als Datasets verwaltetet werden. Sie dazu mehr
unter dem Kapitel Datasets. Der Wert ON hebt
den Parameter DELETE_OLD auf. |
In dieser Parameter Map sind zur Zeit keine Parameter definierbar.
| Parameter | req/opt | Beschreibung |
Der Modul verlangt pro OUT-Objekt folgende Systemkomponenten:
| Komponente | req/opt | Beschreibung |
OUT.TABLE(s) | r | Tablename des OUT Objekts. |
OUT.<Attribut>(s) | o | Attributname der Tabelle. Der Wert der Komponente beinhaltet den Wert für die Datenbank. Der Typ des Werts muss mit dem Typ des Attributs in der Datenbank übereinstimmen. Es können beliebig viele Attribute definiert werden. |
Dieses Objektmodell gilt für die Anwendung mit der Prozedur
XLSOUT_WRITE_OBJECT0. Die Tabellen mit den Attributen müssen in
der Datenbank bereits bestehen oder in einer Konfiguration mit Prozeduren
und Methoden vorgängig erzeugt werden. Falls die Datenbankstrukturen
automatisiert mit dem Modul erstellt werden sollen, so beachten Sie das
Kapitel mit den Record-Definitionen und die Prozedur
XSLSOUT_WRITE_RECORD1.
Tabelle gesamthaft schreiben
Wenn der Modul eine Excel-Tabelle vollständig schreiben soll, muss die Excel-Tabelle nach EXCEL-ODBC-Konvention wie folgt angesprochen werden:
[<table>$]
Beispiel:
MAP RECORD_1 TABLE => [Tabelle1$] : END_MAP
Tabelle tabellarisch schreiben
Damit der Modul Daten tabellarisch - Teile einer Tabelle - in eine Excel-Tabelle schreiben kann, ist die Excel Tabelle wie folgt unter Excel vorzubereiten.
In der ersten Zeile sind die Spaltennamen einzutragen.
Die Spalten sind zu markieren.
Über Einfügen > Namen > Festlegen ist
dem markierten Bereich ein Namen zu vergeben.
Der markierte Bereiche wird über diesen Namen vom Modul XLSOUT angesprochen.
z.B.
MAP RECORD_1 TABLE => Einwohner : END_MAP
Mit Record Definitionen können nicht nur Objekte in die Datenbank
geschrieben werden, sondern auch Datenbank-Tabellen automatisiert in der
Datenbank angelegt werden. Die Record Definitionen werden von der Prozedur
XLSOUT_WRITE_RECORD1 verarbeitet. Eine Record
Definition sieht wie folgt aus.
MAP RECORD_<n>
TABLE => <Table-Name>
:
<Attribute-Name> => <Attribute-Type>,<Attribute-Value>
:
END_MAP
Die einzelnen Bestandteile einer Record-Definition sind:
RECORD_<n>Eine Record Definition ist eine Map. Der Map-Name muss mit dem Prefix RECORD_ beginnen und eine eindeutige Nummer <n> für die Record Definition beinhalten.
TABLEDiese Komponente ist required und definiert die Datenbank-Tabelle.
<Table-Name>Definiert als Wert der Komponente TABLE die Datenbank-Tabelle.
<Attribute-Name>Definiert als Komponente einen Attribut-Namen der Tabelle. Es können beliebig viele Attribute als Komponenten definiert werden.
<Attribute-Type>Definiert den Attribut-Type in der Datenbank. Im Normalfall können der Datenbank bekannt Typen verwendet werden. Spezialtypen einer Datenbank werden eventuell nocht nicht unterstützt. Solche Spezialtypen werden bei Bedarf und auf Anfrage implementiert. Bei den Typen ist auf folgendes zu achten.
Alle Datenbanken
CHAR(<length>)Stringtypen sind immer als CHAR mit der Länge
<length> zu definieren. Je nach
Datenbank wird der Typ vom Modul in einen der Datenbank
bekannten Type umgewandelt z.B. Excel als
TEXT.
Die length darf maximal 255
betragen.
NUMBERNumber-Typen für reelle und ganze Zahlen.
<Attribut-Value>Definiert den Wert für das Attribut. Als Wert können absolute Werte oder ICS-Variablen, die einen Wert beinhalten - z.B. IN.OBJID - verwendet werden.
Beispiel einer Record Definition.
MAP RECORD_1 TABLE => Bodenbedeckung_BoFlaeche_Area OBJID => CHAR(10),IN.OBJID Entstehung => CHAR(10),IN.Entstehung.OBJID Geometrie => DB_GEOMETRY(point;2D),IN.Geometrie Qualitaet => CHAR(30),IN.Qualitaet Art => INTEGER,IN.Art Art_TXT => CHAR(47),IN.Art_TXT Herkunft => CHAR(30),IN.Herkunft END_MAP
Mit dem Parameter DBOUT_PARAM.DATASET => ON
kann der Modul veranlasst werden, die Daten in Datasets zu
verwalten. In der Regel werden verschiedene Datasets in einen Datenbank
geschrieben. Die einzelnen Datasets können danach als Subset des Daten
nachgeführt oder gelöscht werden. Typischerweise bildet ein INTERLIS-File
ein solches Dataset. Falls der Dataset-Parameter eingeschaltet ist, wird
in der Datenbank folgendes angelegt:
CREATE TABLE GS_FILE ( FileID INTEGER -- Schlüssel für Dataset ModelName CHAR(255) -- Modellname (INTERLIS) FileName CHAR(255) -- Filenamen DateFile INTEGER -- YYYYMMDD Datum des Files DateUpload INTEGER -- YYYYMMDD Datum des lesen in die Datenbank UserUpload CHAR(255) -- eventuell ein Username ); CREATE TABLE <Data-Table> ( GS_FileID INTEGER -- Fremdschlüssel für Dataset : );
Die Tabelle GS_FILE verwaltet die Datasets. Jedes
Dataset erhält eine eindeutigen Schlüssel im Attribut
FileID . Jede angelegte Tabelle für die Daten erhält
ein Attribut GS_FileID, das den Fremdschlüssel des
Datasets beinhalten.
Wird ein Dataset (File) das erste Mal in die Datenbank geschrieben
(INSERT) , wird der Eintrag in GS_FILE generiert, und
jeder Daten-Record erhält den Fremdschlüssel des Datasets.
Wird ein Dataset (File) ein nächstes Mal in die Datenbank
geschrieben (UPDATE) , wird der Eintrag in GS_FILE mit
den Daten nachgeführt, die bestehenden Daten des Datasets in der Datenbank
gelöscht und die neuen Daten in die Datenbank geschrieben.
Soll ein Dataset (File) aus der Datenbank gelöscht werden (DELETE), so steht folgende Konfiguration zur Verfügung:
ILTOOLS_DIR\system\script\il2db\dbdatasetdelete.cfg
Diese Konfiguration löscht die Daten eines Datasets und den Eintrag
des Datasets in GS_FILE .
Falls basierend auf den Record-Definitionen vor einem Datentransfer
das gesamte Datenbankmodell erstellt werden soll, so ist der Parameter
CONFIG_PARAM.GENERATE_MODEL auf ON
zu setzten und das Script il2db.lib zu includen:
MAP CONFIG_PARAM GENERATE_MODEL => ON END_MAP : |INCL \script\il2db\il2db.lib
Entsprechend den Record-Definitionen wird vor einem Datentransfer das Datenbankmodell angelegt, falls es nicht schon angelegt wurde.
| Prozedur | XLSOUT_OPEN [s file][] |
| Beschreibung | Öffnet eine Excel File. Die Prozedur wird von RUN1 automatisch aufgerufen. |
| Beispiel | |
| Prozedur | XLSOUT_WRITE_OBJECT0 |
| Beschreibung | Schreibt ein Objekt in eine Excel Tabelle. Das OUT-Objekt muss gemäss dem Objektmodell gefüllt sein. |
| Beispiel | |
| Prozedur | XLSOUT_WRITE_RECORD1 ! s recordname |
| Beschreibung | Schreibt ein Objekt definiert
in
|
| Beispiel | |
| Prozedur | XLSOUT_CLOSE [][] |
| Beschreibung | Schliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen. |
| Beispiel | |
Neben diesen Prozeduren des Modules stehen auch die Methoden der
Klasse DB zur Verfügung (s.a. iG/Script Benutzer- und
Referenzhandbuch).
! Diese ICS Konfiguration liest ein INTERLIS File, ! erzeugt eine Tabelle für LFP's in Excel ! und schreibt die LFP's in die Tabelle. |LICENSE \license\iltools.lic MAP USER_INPUT1 DIALOG => FILE MESSAGE => 'Enter INTERLIS Input File' FILE_FILTER => itf FILE_EXISTS => TRUE OPT => input END_MAP MAP USER_INPUT2 DIALOG => FILE MESSAGE => 'Enter Excel Output File' FILE_FILTER => xls FILE_EXISTS => FALSE OPT => output END_MAP MAP ILIN_PARAM INTERLIS_DEF => \models\Grunddatensatz.ili STATISTICS => ON CALC_SURFACE => ON ENUM_TO_TEXT => ON TRACE => OFF END_MAP MAP ILIN_TOPO DEFAULT => OFF END_MAP MAP DB_PARAM TRACE => OFF END_MAP MAP DBOUT_PARAM STATISTICS => ON CREATE_TABLE => ON DATASET => ON END_MAP MAP XLSOUT_PARAM END_MAP MAP RECORD_1 TABLE => Fixpunkte_LFP OBJID => CHAR(10),IN.OBJID ENTSTEHUNG => CHAR(10),IN.Entstehung.OBJID NUMMER => CHAR(12),IN.Nummer GEOMETRIE => DB_GEOMETRY(point;3D),IN.Geometrie LAGEZUV_TXT => CHAR(4),IN.LageZuv_TXT HOEHEZUV_TXT => CHAR(4),IN.HoeheZuv_TXT BEGEHBARKEIT_TXT => CHAR(14),IN.Begehbarkeit_TXT SYMBOLORI => NUMBER,IN.SymbolOri ART_TXT => CHAR(4),IN.Art_TXT HERKUNFT => CHAR(30),IN.Herkunft END_MAP MAP INPUT_SOURCES I1 => ILTOPO,OPT.input END_MAP MAP INOUT I1 => IN.TOPIC,IN.TABLE I1,Fixpunkte,LFP => XLSOUT_WRITE_RECORD1,RECORD_1 I1,* => OFF END_MAP |INCL \script\iltopo.mod |INCL \script\xlsout.mod |INCL \script\run1.prg