/
Erstellung eines Berichtes mit Selektionsdialog

Erstellung eines Berichtes mit Selektionsdialog

Um einen Bericht mit Selektionsdialog erstellen zu können, benötigen Sie mindestens diese Metadatenobjekte:

  • Datenquelle(n)
  • Datenstruktur
  • Seleketionselement
  • Bericht

Um zu verstehen, wie die Daten der Selektion (tatsächliche Selektion der Daten und Steuerungsflags) an den Bericht übergeben werden, hier die Zusammenhänge:

  • Datensätze der Datenquelle(n) → Bericht
  • Wert Datenstrukturfeld → Platzhalter $[Parameter(name_datenstrukturfeld)] in der Datenquelle
  • Feld und Wert Datenstrukturfeld → Wörterbuch/ Variablen/ Parameter im Bericht

Das "führende" Metadatenobjekt ist der Bericht. Ihm werden Datenquellen und Selektionselement zugeordnet. In der Eigenschaft "SQL-Where-Bedingung" der Hauptdatenquelle müssen die Selektionskriterien integriert werden. Damit wäre die Erstellung von Datenstruktur, Selektionselement, Datenquellen und Bericht eine sinnvolle Reihenfolge. Die Vorgaben für das Selektionselement sind im Kapitel Beschreibung des UIs und Funktionen hinterlegt.

  • Anlage der Datenstruktur "strDruckProjektsteuerung" in der neuen Gruppe "Druck"
    • Anlage des Datenstrukturfeldes "Projektsteuerung"
      • "Datentyp" = "Schlüssel 1 einer Datenklasse"
      • "Datenklasse" = "clsBPKProjektsteuerung.<ihre_partnerid>.<ihre_loesungid>"
      • "Von-Bis-Feld?" aktivieren
    • Anlage des Datenstrukturfeldes "ProjektsteuerungMatchcode"
      • "Datentyp" = "Matchcode für Schlüssel 1 einer Datenklasse"
      • "Datenklasse" = "clsBPKProjektsteuerung.<ihre_partnerid>.<ihre_loesungid>"
      • "Datenklassen-Schlüsselfeld" = "Projektsteuerung"
    • Anlage des Datenstrukturfeldes "Projekt"
      • "Datentyp" = "Schlüssel 1 einer Datenklasse"
      • "Datenklasse" = "clsProjekt.Sage.System"
      • "Von-Bis-Feld?" aktivieren
    • Anlage des Datenstrukturfeldes "ProjektMatchcode"
      • "Datentyp" = "Matchcode für Schlüssel 1 einer Datenklasse"
      • "Datenklasse" = "clsProjekt.Sage.System"
      • "Datenklassen-Schlüsselfeld" = "Projekt"
    • Anlage des Datenstrukturfeldes "Projektleiter"
      • "Datenreferenz" = "dtrBenutzer.Sage.System"
      • "Von-Bis-Feld?" aktivieren
    • Anlage des Datenstrukturfeldes "Status"
      • "Datentyp" = "Indizierter String"
      • "Datentyp Ergänzung" = "0, Projektstaus.Anlage; 1, Projektstatus.Termine geplant; 2, Projektstatus.Termine durchgeführt; 3, Projektstatus.Abgeschlossen"
    • Anlage des Datenstrukturfeldes "Projekttyp"
      • "Datentyp" = "Indizierter String"
      • "Datentyp Ergänzung" = "0, Projekttyp.nur Dienstleistung; 1, Projekttyp.nur Artikel; 2, Projekttyp.Dienstleistung und Artikel"
    • Anlage des Datenstrukturfeldes "MitarbeiterAusweisen"
      • "Feldtitel" = "Mitarbeiter ausweisen"
      • "Datentyp" = "Boolean"
    • Anlage des Datenstrukturfeldes "PlanungAusweisen"
      • "Feldtitel" = "Planung ausweisen"
      • "Datentyp" = "Boolean"
  • Anlage des Selektionselementes "selDruckProjektsteuerung" in der Gruppe "Druck"
    • "Titel" = "Projektsteuerungen"
    • "Datenstruktur" = "strDruckProjektsteuerung.<ihre_partnerid>.<ihre_loesungid>"
    • Anlage des Selektionselement-Register "Projektsteuerungen"
      • Import der Felder
      • "Sichtbarkeit" der Felder "ProjektsteuerungMatchcode" und  "ProjektMatchcode" = "Versteckt"

Damit ist der Selektionsdialog erstellt und wir können auch die Bedingungen für das Freischalten der Option "Planung ausweisen" in die entsprechenden Ereignisse eintragen. Bei Anzeige sollen die Standardwerte der beiden Optionen = "Deaktiviert" sein. Damit muss auch die Option "Planung ausweisen" disabled werden. Wir verwenden das Ereignis "Beim Anzeigen" des Selektionselementes.

ZeileBefehlParameter 1Parameter 2
1FestlegenFeldAktivPlanungAusweisenFalse

Ferner müssen wir auf das Schalten der Option "Mitarbeiter ausweisen" reagieren. Wir verwenden folgende Makros im Ereignis "Nach Aktualisierung" des Selektionselement-Feld "MitarbeiterAusweisen":

ZeileBefehlParameter 1Parameter 2
1Wenn[MitarbeiterAusweisen] = True
2FestlegenFeldAktivPlanungAusweisenTrue
3Sonst

4FestlegenFeldWertPlanungAusweisenFalse
5FestlegenFeldAktivPlanungAusweisenFalse
6EndeWenn

Der Aufbau des Ausdruckes entspricht der 1:N:M-Beziehung Projektsteuerung:Mitarbeiter:Planung und legt damit die zu verwendenden Daten fest. Wir brauchen drei Datenquellen ("BPKProjektsteuerung", "BPKProjektsteuerungMitarbeiter" und "BPKProjektsteuerungMitarbeiterPlanung"). Es sollen laut Anforderung nicht alle Felder ausgedruckt werden. Wir legen die Datenquellen mit dem Assistenten "Tabelle importieren" an und selektieren die benötigten Felder.

  • Anlage der Datenquelle "dtsDruckProjektsteuerung" in der neuen Gruppe "Druck"
    • Übernahme der Felder "SteuerungId", "Matchcode", "Projekt", "Projektleiter", "Projekttyp", "Status" und "Kontakt"
    • "OL-Klassen der benutzerdefinierten Felder" = "BPKProjektsteuerung"

Da wir in den Felder "Projekttyp" und "Status" den Text ausgeben wollen, müssen wir folgende Anpassungen vornehmen:

  • Feld "Projekttyp"
    • "SQL-Abfrage" = "CASE WHEN BPKProjektsteuerung.Projekttyp = 0 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Projekttyp,0)] WHEN BPKProjektsteuerung.Projekttyp = 1 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Projekttyp,1)] WHEN BPKProjektsteuerung.Projekttyp = 2 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Projekttyp,2)] END"
    • "Datentyp" = "String"
  • Feld "Status"
    • "SQL-Abfrage" = "CASE WHEN BPKProjektsteuerung.Status = 0 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Projektstatus,0)] WHEN BPKProjektsteuerung.Status = 1 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Projektstatus,1)] WHEN BPKProjektsteuerung.Status = 2 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Projektstatus,2)] WHEN BPKProjektsteuerung.Status = 3 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Projektstatus,3)] End"
    • "Datentyp" = "String"
  • Anlage der Datenquelle "dtsDruckProjektsteuerungMitarbeiter"
    • Übernahme der Felder "SteuerungId" und "Mitarbeiter"
    • Anlage des Feldes "Matchcode" (soll laut Anforderung mit gedruckt werden)
      • "SQL-Abfrage" = "(SELECT Matchcode FROM KHKMitarbeiter WHERE KHKMitarbeiter.Mandant = $[Mandant] AND BPKProjektsteuerungMitarbeiter.Mandant = $[Mandant] AND KHKMitarbeiter.Nummer = BPKProjektsteuerungMitarbeiter.Mitarbeiter)"
  • Anlage der Datenquelle "dtsDruckProjektsteuerungMitarbeiterPlanung"
    • Übernahme der Felder "SteuerungId", "PlanungId", "Mitarbeiter", "DatumVon", "DatumBis" und "Planung"

Da wir im Feld "Planung" den Text ausgeben wollen, müssen wir folgende Anpassungen vornehmen:

  • Feld "Planung"
    • "SQL-Abfrage" = "CASE WHEN BPKProjektsteuerungMitarbeiterPlanung.Planung = 0 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Themengruppe,0)] WHEN BPKProjektsteuerungMitarbeiterPlanung.Planung = 1 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Themengruppe,1)] WHEN BPKProjektsteuerungMitarbeiterPlanung.Planung = 2 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Themengruppe,2)] WHEN BPKProjektsteuerungMitarbeiterPlanung.Planung = 3 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Themengruppe,3)] WHEN BPKProjektsteuerungMitarbeiterPlanung.Planung = 4 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Themengruppe,4)] WHEN BPKProjektsteuerungMitarbeiterPlanung.Planung = 5 THEN $[GetString(<ihre_partnerid>.<ihre_loesungid>,Themengruppe,5)] END"
    • "Datentyp" = "String"

Da die Selektion bekannt und bereits in den Metadaten angelegt ist, können wir die Daten auf die Selektion einschränken. Die Einschränkung geht laut Anforderung auf die Projektsteuerungsdaten. Wir müssen also die "SQL-Where-Bedingung" der Datenquelle "dtsDruckProjektsteuerung" erweitern. Nach der Anlage mit dem Assistenten "Tabelle importieren", steht in dieser Eigenschaft die Verknüpfung zum Mandanten der Datenbank ("BPKProjektsteuerung.Mandant = $[Mandant]").

Wir ergänzen diese Eigenschaft mit den Einschränkungen laut Selektionselement:

  • "SQL-Where-Bedingung" der Datenquelle "dtsDruckProjektsteuerung" = "BPKProjektsteuerung.Mandant = $[Mandant] $[AppendAndParameterFromTo(Projektsteuerung,SteuerungId)] $[AppendAndParameterFromTo(Projekt,Projekt)] $[AppendAndParameterFromTo(Projektleiter,Projektleiter)] $[IfParameterExists(Status," AND Status = $[Parameter(Status)]")] $[IfParameterExists(Projekttyp," AND Projekttyp = $[Parameter(Projekttyp)]")]"

Damit haben wir alle Metadaten, um den Bericht anzulegen.

  • Anlage des Berichtes "rptProjektsteuerungen" in der neuen Gruppe "Stammdaten"
    • "Selektions-Element" = "selDruckProjektsteuerung.<ihre_partnerid>.<ihre_loesungid>"
    • "Haupt-Datenquelle" = "dtsDruckProjektsteuerung.<ihre_partnerid>.<ihre_loesungid>"
    • "Unter-Datenquellen" = "dtsDruckProjektsteuerungMitarbeiter.<ihre_partnerid>.<ihre_loesungid>" und "dtsDruckProjektsteuerungMitarbeiterPlanung.<ihre_partnerid>.<ihre_loesungid>"
    • "im Regiezentrum verfügbar" aktivieren (der Bericht kann unter "Auswertungen/Weitere Auswertungen" aufgerufen werden)
    • "für Wawi?" aktivieren


Nachfolgend werden Teile des Berichtentwurfes erläutert. Der Bericht wird mit einer Fremdkomponente (Stimulsoft Reports) erstellt. Zu dieser Fremdkomponente gibt es separate Online-Hilfen. Daher werden die Details der Berichterstellung hier nicht erläutert.

Der Bericht selber sieht im Entwurfmodus so aus:

Der Kopf und Fuß sind analog dem Standard aufgebaut und können von den Standardberichten kopiert werden.

Die Verknüpfung (Relation) der drei Datenbänder entspricht der der Datenbank. Damit übergeordnete Daten auch gedruckt werden, wenn es keine Detaildatensätze gibt, stellen wir die Eigenschaft "Drucken, wenn Detail-Daten leer" = "Wahr" ein. Wie zu Anfang erwähnt, stehen uns die Datenstrukturfelder unter Variablen im Bericht zur Verfügung.

Die Steuerungsflags "MitarbeiterAusweisen" und "PlanungAusweisen" werden als Filter in dem entsprechenden Datenband verwendet (Ausdruck: MitarbeiterAusweisen = True). Im Seitenkopf im Ereignis "Vor dem Drucken", codieren wir das ein-/ausblenden der Überschrift:

If MitarbeiterAusweisen = False Then
	Me.lblMitarbeiter.Enabled = False
	Me.lblMitarbeitermatchcode.Enabled = False
End IF
If PlanungAusweisen = False Then
	Me.lblDatumVon.Enabled = False
	Me.lblDatumBis.Enabled = False
	Me.lblPlanung.Enabled = False
End IF

Damit ist die Erstellung des Berichtes abgeschlossen. Das Ergebnis sieht so aus (abhängig davon, ob Sie Daten in der Planung hinterlegt haben):

Frage: Soll der Bericht an definierter Stelle aus dem Regiezentrum aufrufbar sein?
  • Die Antwort ist Ja: Sie benötigen einen Eintrag unter „Oberfläche/ Regiezentrum“
  • Die Antwort ist Nein: Die Erstellung des Berichtes „rptProjektsteuerungen“ ist abgeschlossen

Laut Beispielbeschreibung soll der Bericht unter dem Menüpunkt „Projektsteuerungen“ aufrufbar sein.

Wechsel Sie im AppDesigner auf „Oberfläche/ Regiezentrum“ und erstellen Sie den neuen Eintrag „mnuDruckProjektsteuerungen“. Hinterlegen Sie folgende Eigenschaften:

EigenschaftWert
ApplikationWawi
Eltern-KnotenmnuProjektsteuerung.<ihre_partnerid>.<ihre_lösungid>
TitelProjektsteuerungen drucken
TypBerichts-Aufruf
Anzeigenreihenfolge40
KategorieBericht
aufzurufendes ObjektrptProjektsteuerungen.<ihre_partnerid>.<ihre_lösungid>

Deaktivieren Sie die Lizenzoption „im Regiezentrum verfügbar?“ des Berichtes „rptProjektsteuerungen“.

Hinweis für Developer Partner

WDB-Eintrag 203334:

Anhang ADID.Projektsteuerung.rar

Related content