Das
Inhaltsverzeichnis kann mit Winword mitteln erstellt werden. Hierzu
werden die Absätze je nach Tiefe des gewünschten Inhaltsverzeichnisses
als Heading 1
.. n definiert. In unserem Beispiel ist bspw. das Wort Kunden als Heading 1 definiert
und die Zeile Account-Bereich
<?ACCOUNT_MGR_ID?> als Heading 2.
Formfelder können hierbei nicht verwendet werden, da deren Inhalt nicht
dynamisch in das Inhaltsverzeichnis übertragen wird.
über Insert - Field kann
nun ein TOC
eingefügt werden. Nachdem TOC in der Field names Liste ausgewählt
wurde, sollte erst auf den Button Table of Contents ...
geclickt werden, bevor der Dialog abgeschlossen wird.
Hier kann man das Inhaltsverzeichnis konfigurieren und eine andere Darstellung für das
Web - also HTML verwenden, da hier Seitenzahlen keinen Sinn machen:
Das
Inhaltsverzeichnis (hier mit hardcodierter Zeile Inhaltsverzeichnis)
sieht also wie folgt aus (Beispieltemplate):
Zum
Nachstellen dieses Beispiels können die folgenden 3 Abfragen gegen das
Order-Entry-Schema (OE) oder dieses Daten-XML
verwendet werden.
SELECT CUSTOMER_ID, CUST_FIRST_NAME, CUST_LAST_NAME, CUST_ADDRESS, PHONE_NUMBERS, NLS_LANGUAGE, NLS_TERRITORY, CREDIT_LIMIT, CUST_EMAIL, ACCOUNT_MGR_ID, CUST_GEO_LOCATION, DATE_OF_BIRTH, MARITAL_STATUS, GENDER, INCOME_LEVEL FROM CUSTOMERS ORDER BY ACCOUNT_MGR_ID, CUSTOMER_ID
SELECT PRODUCT_ID, LANGUAGE_ID, PRODUCT_NAME, CATEGORY_ID, PRODUCT_DESCRIPTION, WEIGHT_CLASS, WARRANTY_PERIOD, SUPPLIER_ID, PRODUCT_STATUS, LIST_PRICE, MIN_PRICE, CATALOG_URL FROM PRODUCTS WHERE CATEGORY_ID < 20 order by CATEGORY_ID, PRODUCT_ID
SELECT DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID, CURSOR(SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, MANAGER_ID FROM EMPLOYEES WHERE DEPARTMENTS.DEPARTMENT_ID=EMPLOYEES.DEPARTMENT_ID ORDER BY EMPLOYEE_ID) AS EMPL FROM DEPARTMENTS WHERE DEPARTMENT_ID < 100 ORDER BY DEPARTMENT_ID
Das
Ergebnis ist ein PDF-Dokument mit einem Inhaltsverzeichnis zu Beginn.
Wie in der Definition des ToC angegeben, erscheinen in der HTML-Ausgabe
keine Seitennummern
Table of Contents & Bookmarks Will man dieses
Inhaltsverzeichnis zusätzlich als Bookmarks in einem PDF-Dokument, kann
man dieses dorthin "kopieren", was mit dem Syntax <?copy-to-bookmark:?>
und <?end
copy-to-bookmark:?> (Beispieltemplate)
Das
resultierende PDF beinhaltet nun ein Inhaltsverzeichnis im Text und als
Bookmarkleiste. Für andere Output-Formate hat dies keine änderung zur
Folge, da dies dort nicht unterstützt wird.
Bookmarks
Soll
das Inhaltsverzeichnis als Bookmark, nicht aber im
Text eines PDF-Dokumentes vorkommen, kann man dieses dorthin
"verschieben", was mit dem Syntax <?convert-to-bookmark:?>
und <?end
convert-to-bookmark:?> gemacht wird. Hierfür sollte
man aber natürlich den Text "Inhaltsverzeichnis" entfernen
und den Seitenumbruch zum Anfang des eigentlichen Berichtes. (Beispieltemplate)
Exkurs
Seitenumbruch
Wer
sich in den Beispielen wundert, warum nie ein Tabellenblock (wie jener
des Kunden Constantin Welles oben obigen Bild) auf 2 Seiten getrennt
wird und man in den Beispiel-Templates auf den ersten Blick eventuell
nicht sieht woran dies liegt - für den hier folgender Tipp.
Man erstellt eine Tabelle, die aus
einer Zeile und einer Spalte besteht und desellektiert die
Zeileneigenschaft "Allow row to break across pages".
Nun
entfernt man noch die Ränder (Borders) dieser Tabelle und setzt in den
Table Options die Ränder (Margins) auf 0 cm.
In diese neue
Tabelle
kopiert man die bestehende Tabelle, die man nicht trennen möchte. Dies
ist im Prinzip das gleiche wie die Property "Page Protect" in Oracle
Reports füör Frames.