Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Datenbanken

k22:k22.11:k22.11.2:start

22.11.2 Report - Entwurf

Es hat sich als günstig erwiesen, das Layout des zu erzeugenden Reports aufzuzeichnen und sich bei den Report-Containern (ReportHBox, ReportVBox, ReportVPanel, ReportPanel) mit den enthaltenen Report-Steuerelementen (die auch wieder Report-Container sein können) den passenden Typ, Größenangaben und u.U. Farben oder andere Design-Angaben wie Schriftart und Schrift-Höhen zu notieren.

Beim Entwurf eines Reports sollten Sie so vorgehen:

  • Der Standard für jeden neuen Report für das (Papier-)Format für den Ausdruck ist A4. Legen Sie sich schon frühzeitig auf das Papierformat fest.
  • Legen Sie fest, aus welchen Sektionen der Report bestehen soll. Denkbar wären beispielsweise ein Deckblatt (Section1: Cover) vor den Seiten des eigentlichen Reports (Section2: Pages) und eine Zusammenfassung (Section3: Summary)
  • Finden Sie heraus, aus welchen Abschnitten der Report-Kopf bestehen soll und welcher Abschnitt auf jeder Seite wiederholt werden soll. Eine Sonderstellung nimmt dabei die erste Seite ein, auf der zum Beispiel der Datenbankname, der Name der Datenbanktabelle, der Name des Bearbeiters und das Druckdatum stehen. Diese Angaben fehlen dann ab der zweiten Seite und es wird dann nur noch der Berichtsname nach einem passenden Logo, als Teil des Corporate Design Ihrer Organisation angezeigt.
  • Kennzeichnen Sie die Report-Steuerelemente, deren Inhalt auf jeder Seite wiederholt werden soll. Bei einem tabellarischen Report wären das der Tabellenkopf und eine folgende Tabellenzeile, die jedoch so oft wiederholt werden muss, wie Datensätze in der Datenquelle vorhanden sind. Die Zahl der Wiederholungen müssen Sie fest vorgeben oder ermitteln.
  • Eine Fußzeile auf allen Seiten mit den Seitenzahlen vom Format 'Seite 2 von 5' schafft vor Allem bei längeren Reporten Übersicht. Ob diese Angaben linksbündig, mittig oder rechtsbündig oder alternierend angegeben werden ist vorzumerken.
  • Ermitteln Sie, ob der Report so aufgeteilt werden muss, dass einzelne Abschnitte immer auf einer neuen Seite beginnen sollen. Denkbar wäre das für eine Zusammenfassung der Aussagen des Berichtes.
  • Um Abstände zwischen Report-Containern zu definieren, können Sie auch Report-Steuerelemente wie ReportPanel oder ReportHBox einsetzen.
  • Überlegen Sie, ob solche Abstände zum Beispiel auch durch Werte für die Eigenschaft Padding vom Typ ReportPadding realisiert werden können. Das hängt aber davon ab, ob das Report-Steuerelement auf jeder Seite oder nur im Report-Container wiederholt wird.
  • Überlegungen zum Design sollte stets auf die Verwendung von wenigen Farben und einer Schriftart abzielen. Mit besonderen Effekten wie Farbverläufen sollten Sie sparsam umgehen.
  • Präventiv sollten Sie auch eine Text-Zusammenfassung der Aussagen des Berichtes am Ende des Report planen, die auf den letzten Seiten angezeigt wird. Bedenken Sie aber, dass keine Klasse ReportTextArea existiert, um einfachen (ASCII-)Text im Report anzuzeigen! Den Text müssen Sie in geeigneter Weise splitten, um ihn dann über ReportLabel oder ReportTextLabel auszudrucken.

22.11.2.1 Hinweise

Die folgenden Hinweise sollen Ihnen bei der Umsetzung der Layout-Planung mit dem Report-Designer in Gambas helfen. Probieren Sie die Wirkung der Werte der einzelnen Eigenschaften auf das Layout Ihres Report in der Vorschau aus und ändern Sie Eigenschaft und Werte so lange, bis Sie mit dem Ergebnis zufrieden sind.

Hinweise zu Eigenschaften der Anordnung von Report-Containern:

  • Eigenschaft Arrangement: Diese Eigenschaft existiert derzeit nur für das ReportPanel. Sie können 3 verschiedene Werte definieren: None, Vertical, Horizontal. Vertical und Horizontal wirken so, als hätten Sie eine ReportVBox oder ReportHBox verwendet.
  • Eigenschaft Spacing: Diese Eigenschaft definiert einen horizontalen Abstand zwischen zwei Report-Steuerelementen.
  • Eigenschaft ForceNewPage: Das ist eine ganz besondere Eigenschaft. Jedes Mal, wenn ein Report-Container mit der Eigenschaft Container.ForceNewPage = True wiederholt wird, erzwingt er eine neue Seite.
  • Eigenschaft OnePiece: Der Inhalt dieses Report-Containers muss auf einer Seite angezeigt werden. Es wird durch die Klasse alles getan, um dieses Ziel zu erreichen.

Hinweise zu Eigenschaften der Anordnung von Report-Steuerelementen:

Achtung: Diese Report-Steuerelemente sind keine Report-Container.

  • Eigenschaft Expand: Die Report-Steuerelement-Höhe ist der verbleibende Platz (auf der Seite). Wenn bei mehr als einem Report-Steuerelement in einer ReportVBox die Option Expand aktiviert ist, dann ist die Report-Steuerelement-Höhe der verbleibende Platz geteilt durch die Anzahl der Report-Steuerelemente auf der aktuellen Seite.
  • Eigenschaft Ignore: Dieses Report-Steuerelement wird nicht vom Report-Container angeordnet und dafür seine Eigenschaften Left und Top verwendet, um es relativ zur Report-Container-Position zu platzieren.
  • Eigenschaft Fixed: Für Fixed = True wird das Report-Steuerelement jedes Mal wiederholt, wenn sein Report-Container wiederholt wird.
  • Eigenschaft Margin: Diese Eigenschaft ermöglicht es dem Report-Steuerelement, einen Mindestabstand zwischen dem Report-Steuerelement und einem anderen zu definieren. Es wird der größte Wert zwischen zwei Report-Steuerelementen berücksichtigt. Der Rand kann für jeden Teil-Rand des Report-Steuerelement auch einzeln eingestellt werden.

22.11.2.2 ReportLabel und ReportTextLabel

Die folgenden Beschreibungen für das ReportLabel gelten gleichermaßen auch für das Report-Steuerelement ReportTextLabel. Während das ReportLabel nur Text druckt, wird beim ReportTextLabel Rich-Text ausgedruckt.

Verwenden Sie die Eigenschaft Data vom Datentyp String, um den Inhalt eines Steuerelements ReportLabel während des Data()-Ereignishandlers über die Data-Eigenschaft bereitstellen.

Das wichtigste Ereignis ist daher Data ( argIndex As Integer ). Dieses Ereignis wird ausgelöst, wenn im Steuerelement ReportLabel Text gespeichert werden soll. Das Argument `argIndex` gibt den aktuellen Index des Steuerelements zurück. Index ist eine Eigenschaft eines ReportLabels.

Beispiel:

Private hResult As Result
 
Public Sub Report_Open()
 
  ...
' Generiert das Ergebnis einer Datenbank-Abfrage aus einer ausgewähltenDatenbank-Tabelle
  hResult = curDBConnection.Exec("SELECT * FROM tablename")
' Setzt die Anzahl der Wiederholungen der drei TextLabel im Container ReportHBox1
  ReportHBox1.DataCount = hResult.Count
  ...
 
End
 
Public Sub ReportLabelName_Data(Index As Integer)
 
' Verwenden Sie das Argument `Index`, um durch das Abfrage-Ergebnis zu navigieren.
  hResult.MoveTo(Index)
' Der Inhalt des Datenbank-Feldes `nachname` wird im Steuerelement `ReportLabelName` angezeigt
  hResult.MoveTo(Index)
  Last.Data = hResult["nachname"]
' Last.Data = hResult!nachname ' Alternative
 
End
 
Public Sub ReportLabelVorname_Data(Index As Integer)
  hResult.MoveTo(Index)
  Last.Data = hResult["vorname"]
End
 
Public Sub ReportLabelGebDatum_Data(Index As Integer)
  hResult.MoveTo(Index)
  Last.Data = Format(hResult["gebdatum"], "d. mmmm yyyy") ' Mit Formatierung
End

B1

Abbildung 22.11.2.2.1: Datenbank-Report (Ausschnitt)

Hinweise
Setzen Sie die UseField-Eigenschaft im ReportLabel auf True, ist die Komponente vorerst abwärtskompatibel zu gb.report. Die Range-Eigenschaft ist gegenwärtig (August 2019) nicht benutzt.

22.11.2.3 Klasse ReportImage

Diese Klasse implementiert ein Report-Steuerelement, das ein Bild anzeigt und druckt.

22.11.2.3.1 Eigenschaften der Klasse ReportImage

Die Klasse ReportImage verfügt u.a. über folgende Eigenschaften:

EigenschaftDatentypBeschreibung
ImageImageSetzt das im ReportImage anzuzeigende Bild oder gibt das Bild zurück.
FixedBooleanGibt zurück oder setzt, ob das Bild bei jedem Aufruf seines übergeordneten Elements angezeigt wird oder nicht.
StretchIntegerDie Eigenschaft Report-Image.Stretch kann einen der drei Werte Report.Fill (2), Report.Proportional (1) oder Report.None (0) annehmen.

Tabelle 22.11.2.3.1 : Eigenschaften der Klasse ReportImage

Hinweis: Wenn die Werte Bild-Breite und Bild-Höhe Null sind, verhält sich das Steuerelement so, als wäre seine Eigenschaft Autoresize = True.

Beispiel: Bild in ein ReportImage einfügen

Public Sub Report_Open()
 
  Dim hReportImageLogo As Image  
  ...
  hReportImageLogo = Image.Load(".../logo-ide.png")
 
  ReportImage1.Image = hReportImageLogo
 
  ReportImage1.Stretch = Report.Proportional
 
' Ausgabe der originalen Werte für Bild-Höhe und Bild-Weite
  Print "Logo.H = "; hReportImageLogo.Height; " Pixel"
  Print "Logo.W = "; hReportImageLogo.Width; " Pixel"
 
End

Das Logo von Gambas ziert das Deckblatt eines Reports:

B2

Abbildung 22.11.2.3.1: Report-Deckblatt mit Bild (Ausschnitt)

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k22/k22.11/k22.11.2/start.txt · Zuletzt geändert: 18.08.2021 (Externe Bearbeitung)

Seiten-Werkzeuge