Erweiterungen für den Report-Designer

Es gibt zwei wesentliche und mächtige Möglichkeiten, mit denen die Funktionalität des integrierten Report-Designers deutlich erweitert werden kann. Zum einen lassen sich eigene Funktionen erstellen und über ein gewisses Ereignis einbinden, die dann wiederum im Designer zur Verfügung stehen. Darüber hinaus können eigene Datenquellen für bestimmte Reports eingestellt werden, so dass die Daten nicht der Menüfunktion und der dahinterstehenden Tabelle sowie den per 'Designer-Tabellen' angebundenen Tabellen entnommen werden, sondern statt dessen eine in .NET gestaltete Datenquelle (Tabelle, Liste, ...) verwendet wird. Zum Ausprobieren ist der Code aus den unteren Beispielen in die Datei 'TriggerFormFramework.vb' einzufügen.

Eigene Datenquelle (Tabelle, Liste etc.) verwenden

Eine eigene Datenquelle kann über das Ereignis 'LLSetzeDataSource' in der Klasse 'TriggerFormFramework' eingestellt werden. Damit diese auch verwendet wird, ist in easyWinArt am entsprechenden Report-Eintrag im Drucken-Fenster der Haken 'Optionale Datenquelle' einzustellen und der Haken 'Erweiterte Datenquelle' zu deaktivieren. Im Ereignis wird wie gewohnt eingeschränkt, um welche Menüfunktion es geht, so dass man je nach Menüfunktion verschiedene Unterfunktionen mit verschiedenen anzubindenden Datenquellen programmieren kann.

Das dargestellte Beispiel zeigt auf, wie für die Menüfunktion 'Artikel' eine generische Liste als eigene Datenquelle hinzugefügt wird. Da hier keine weiteren Einschränkungen gegeben sind, gilt dies für alle Reports, sowohl unter 'Drucken' als auch unter 'Listen'.

VB.NET SDK-Programmcode: Beispiel 1

  

#Region " LLSetzeDataSource-Ereignis " 

        Private Sub TriggerFormFramework_LLSetzeDataSource(ByVal sender As Object, ByVal e As FormFrameworkLLEventArgs) Handles Me.LLSetzeDataSource 

                '>>> A R T I K E L 

                If TypeOf sender Is ArtikelFRM Then 

                    '>>> Beispiel-Liste erstellen 

                    Dim meineListe As New List(Of String) 

                    meineListe.Add("Auto 123") 

                    meineListe.Add("Bahn 456") 

                    '>>> Liste als Datenquelle dem Formular Artikel (Auslöser des Ereignisses) zuordnen 

                    e.LL.DataSource = meineListe 

                End If 

        End Sub 

#End Region

Das zweite Beispiel enthält eine weitere Einschränkung. So soll die Datenquelle nur für einen ganz bestimmten Report gelten. Dies kann man z.B. über die Druck-Parameter einschränken, aber auch andere Möglichkeiten sind denkbar, z.B. über den Namen der Liste ('e.LL.EwaAnzeige'). Der Report muss im Druck-Fenster entsprechend eingestellt sein.

VB.NET SDK-Programmcode: Beispiel 2

  

#Region " LLSetzeDataSource-Ereignis " 

        Private Sub TriggerFormFramework_LLSetzeDataSource(ByVal sender As Object, ByVal e As FormFrameworkLLEventArgs) Handles Me.LLSetzeDataSource 

                '>>> A D R E S S E N - Menüfunktion 

                If TypeOf sender Is AdressenFRM Then 

                    '>>> Diese Datenbindung nur für den Report-Eintrag mit dem entsprechenden Wert im DruckParameter1 

                    If e.LL.EwaDruckParameter1 = "Meine-Adress-Liste" Then 

                        '>>> Tabelle bilden mit den Daten 

                        Dim tmpDBZ As SQLServerZugriff = Datenbank.DatenDB 

                        Dim tmpSQL As String = "SELECT " & TBL.Adressen.AdressNummerINT & _ 

                                                    ", " & TBL.Adressen.FirmenNameVC & _ 

                                                    ", " & TBL.Adressen.OrtVC & _ 

                                               " FROM " & TBL.Adressen.TBL & _ 

                                               " WHERE " & TBL.Adressen.PlzVC & " LIKE '4%'" 

                        Dim tmpTable As DataTable = tmpDBZ.BildeDataTableSQL(tmpSQL, TBL.Adressen.TBL) 

                        '>>> Liste als Datenquelle dem Formular Artikel (Auslöser des Ereignisses) zuordnen 

                        e.LL.DataSource = tmpTable 

                    End If 

                End If 

        End Sub 

#End Region

 Report-Eintrag-Typen

Typ Kürzel AnwenderReport OriginalReport easyWinArtFlag
Original-easyWinArt-Report ORG False True True
Modifizierter Original-easyWinArt-Report MOD True True True
Verweis auf Original-easyWinArt-Report U-ORG False True False
Anwender-Report USER True False False
Verweis auf Anwender-Report USER True False False

Beratung erwünscht?

Gerne können Sie mich oder einen mein­er freund­lichen Kollegen telefonisch er­reichen:  +49 2161 277 680

Alter­na­tiv schrei­ben Sie uns an  info@it-easy.de oder nutz­en Sie das nach­folgende Kontakt­formular.

Ihr Ralf Jasper
Kundenservice

Mitarbeiterfoto von Herrn Ralf Jasper


Rückruf-Service

Für eine möglichst unkomplizierte Kontaktaufnahme füllen Sie bitte das unten stehende Formular aus und klicken auf „Rückruf anfordern“.