PDF-Erzeugung – Teil 2

Ausgabe als Tabelle

Das Beispiel in Listing 2 zeigt, wie Sie den Inhalt einer Datensatzgruppe als Tabelle ausgeben. Dazu ist es notwendig, zunächst das Recordset- Objekt zu erzeugen und die Datensatzgruppe in einer Schleife zu durchlaufen.

Sub ListeAusgeben()
Dim strSQL As String
Dim objPDF As PDFCreatorPilot2.piPDFDocument
Dim objRS As ADODB.Recordset
Set objRS = New ADODB.Recordset
Set objPDF = New piPDFDocument
Dim strName As String
Dim lngX As Long
Dim lngY As Long
Dim objFeld As ADODB.Field
Const lngZeilenabstand = 2
lngX = 10
lngY = 10
strName = getDBPfad() & "PDFCreatorListe2.pdf"
strSQL = "SELECT * FROM Daten"
'SQL-Anweisung ausführen
objRS.Open strSQL, Application.CurrentProject.Connection, adOpenStatic
'PDF-Datei erstellen
If objRS.RecordCount > 0 Then
With objPDF
'PDF-Datei erzeugen
'Initialisieren
.StartEngine "demo@demo", "demo"
'PDF-Datei im Anschluss öffnen
.AutoLaunch = True
'Dateiname festlegen
.FileName = strName
'Dokument erstellen
.BeginDoc
'Schriftart und Größe festlegen
.PDFPAGE_SetActiveFont "Verdana", True, False, False, False, 18, 0
'Überschrift ausgeben
.PDFPAGE_TextOutBox lngX, lngY, 0, 1000, 20, "DATEN"
'Schrift für die Liste festlegen
.PDFPAGE_SetActiveFont "Verdana", True, False, False, False, 14, 0
'Alle Datensätze durchlaufen
objRS.MoveFirst
Do While objRS.EOF = False
lngY = lngY + (14 * lngZeilenabstand)
'alle Felder durchlaufen
For Each objFeld In objRS.Fields
.PDFPAGE_TextBox lngX, lngY, lngX + (.PDFPAGE_Width \ _
objRS.Fields.Count), lngY + 14, objFeld.Value, hjLeft, vjCenter
lngX = lngX + (.PDFPAGE_Width \ objRS.Fields.Count)
Next objFeld
lngX = 10
objRS.MoveNext
Loop
'Dokument abschließen und speichern
.EndDoc
End With
End If
End Sub

Damit dann auch unabhängig von den Feldern der Abfrage alle Daten ausgegeben werden, müssen Sie noch innerhalb der Do-While-Schleife alle Felder in einer For-Each-Schleife durchlaufen. Geben Sie Text mit der TextOutBox- Methode aus, müssen Sie ihn jedoch exakt positionieren. Das heißt, die Komponente sorgt nicht selbst dafür, dass die Textboxen nebeneinander angeordnet werden.

Sie müssen daher sowohl die X- wie die Y-Position der Ausgabe über entsprechende Variablen festlegen. Die Variable lngX bestimmt die horizontalePosition, die Variable lngY die vertikale Position der Ausgabe.