{"id":55000261,"date":"2021-02-01T00:00:00","date_gmt":"2021-04-29T18:37:42","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=261"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Reporting_Services_Datasets_mit_Parametern","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Reporting_Services_Datasets_mit_Parametern\/","title":{"rendered":"Reporting Services Datasets mit Parametern"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg02.met.vgwort.de\/na\/052fa8d2713f4ae589364f5d0bd1888c\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Ein Dataset, das als Datenquelle eines Berichts der Reporting Services dient, ist selten statisch aufgebaut &#8211; also so, dass es immer alle Daten einer Tabelle oder Abfrage liefert oder einen bestimmten Teil. Stattdessen sollen Berichte oft Daten liefern, die sich auf einen bestimmten Zeitraum beziehen, auf einen bestimmten Kunden oder auch auf bestimmte Artikel oder Kategorien. In den bisherigen Artikeln haben wir erl&auml;utert, wie Sie Berichte auf Basis statischer Datenquellen erstellen. Der vorliegende Artikel f&uuml;gt die Verwendung von Parametern mit hinzu, damit der Benutzer genau festlegen kann, welche Daten der von ihm gew&auml;hlte Bericht liefern soll.<\/b><\/p>\n<h2>Vorbereitung f&uuml;r diesen Artikel<\/h2>\n<p>Da wir uns explizit um den Einsatz von Parametern k&uuml;mmern wollen, gehen wir von einem Visual Studio-Projekt des Typs <b>Berichtsserverprojekt <\/b>namens <b>DatasetMitParametern <\/b>aus.<\/p>\n<p>Diesem haben wir eine freigegebene Datenquelle namens <b>AdventureWorks <\/b>auf Basis der SQL Server-Datenbank <b>AdventureWorksLT2019 <\/b>hinzugef&uuml;gt. Wo Sie diese Beispieldatenbank finden und wie Sie diese installieren, erfahren Sie im Artikel <b>AdventureWorks: Schnelle Beispieldatenbank <\/b>(<b>www.datenbankentwickler.net\/254)<\/b>.<\/p>\n<h2>Dataset anlegen<\/h2>\n<p>Das Dataset f&uuml;r diesen Bericht legen wir als eingebettetes Dataset an. Damit erhalten wir zum Beispiel den Vorteil, dass die in diesem Dataset definierten Parameter direkt vom Bericht als solche erkannt werden.<\/p>\n<h2>Bericht anlegen<\/h2>\n<p>Nun legen wir einen neuen Bericht namens <b>SalesPerProduct.rdl <\/b>an. Diesem weisen wir die zuvor angelegte freigegebene Datenquelle <b>AdventureWorks.rds <\/b>als Datenquelle zu und geben auch der neuen eingebetteten Datenquelle den Namen <b>AdventureWorks<\/b>. <\/p>\n<p>Dann legen wir f&uuml;r den Bericht ein neues eingebettetes Dataset namens <b>ProductsSalesOrders <\/b>an (siehe Bild 1). Das Dataset verwendet einige Felder der drei Tabellen <b>Product<\/b>, <b>SalesOrderDetail <\/b>und <b>SalesOrderHeader <\/b>als Datenquelle. Damit haben wir ausreichend Daten zum Demonstrieren der Parameter-Funktionen der Reporting Services.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_261_001.png\" alt=\"Abfrage f&uuml;r das Dataset ProductsSalesOrders\" width=\"649,627\" height=\"604,227\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Abfrage f&uuml;r das Dataset ProductsSalesOrders<\/span><\/b><\/p>\n<p>Der Bereich <b>Berichtsdaten <\/b>sieht anschlie&szlig;end wie in Bild 2 aus. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_261_002.png\" alt=\"Daten f&uuml;r den Bericht\" width=\"374,6267\" height=\"419,9355\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Daten f&uuml;r den Bericht<\/span><\/b><\/p>\n<p>Nun blenden wir die Toolbox ein und f&uuml;gen dem Bericht ein <b>Tabelle<\/b>-Element hinzu. Dann wechseln wir wieder zum Berichtsdaten-Bereich und ziehen einige Felder in die Tabelle, sodass diese wie in Bild 3 aussieht.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_261_003.png\" alt=\"Berichtsentwurf\" width=\"700\" height=\"313,3986\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Berichtsentwurf<\/span><\/b><\/p>\n<p>Ein Wechsel in die Vorschauansicht liefert eine Liste der einzelnen Bestellpositionen (siehe Bild 4). Damit haben wir alles zusammen, um die angezeigten Datens&auml;tze nach verschiedenen Kriterien mit noch zu ermittelnden Parameterwerten zu filtern.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_261_004.png\" alt=\"Ausgabe der einzelnen Bestellpositionen\" width=\"624,6265\" height=\"378,9339\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Ausgabe der einzelnen Bestellpositionen<\/span><\/b><\/p>\n<h2>Parameter zum Dataset hinzuf&uuml;gen<\/h2>\n<p>Der erste Schritt ist das Hinzuf&uuml;gen des Parameters zum Dataset. Dazu &ouml;ffnen wir das Dataset per Doppelklick auf seinen Eintrag im Bereich Berichtsdaten.<\/p>\n<p>Im Bereich <b>Abfrage <\/b>des Dialogs <b>Dataseteigenschaften <\/b>finden wir im Feld <b>Abfrage <\/b>die SQL-Abfrage. Diese erweitern wir wie in Bild 5 um die folgende <b>WHERE<\/b>-Klausel:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_261_007.png\" alt=\"Integrieren des Parameters im Abfrageausdruck\" width=\"674,627\" height=\"463,1366\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Integrieren des Parameters im Abfrageausdruck<\/span><\/b><\/p>\n<pre>WHERE SalesOrderDetail.ProductID = @ProductID<\/pre>\n<p>Um die Funktionsweise dieses Parameters auszuprobieren, klicken Sie auf die Schaltfl&auml;che <b>Abfrage-Designer&#8230; <\/b>und &ouml;ffnen so den Dialog <b>Abfrage-Designer<\/b>. Hier finden Sie die neu hinzugef&uuml;gte <b>WHERE<\/b>-Klausel ebenfalls vor. Um diese auszuprobieren, bet&auml;tigen Sie die Schaltfl&auml;che mit dem roten Ausrufezeichen. Dadurch erscheint der Dialog <b>Abfrageparameter<\/b> (siehe Bild 6). Hier geben Sie den Wert ein, nach dem das Feld <b>ProductID <\/b>gefiltert werden soll, zum Beispiel <b>991<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_261_008.png\" alt=\"Eingabe des Parameterwertes\" width=\"449,6267\" height=\"495,8334\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Eingabe des Parameterwertes<\/span><\/b><\/p>\n<p>Der Abfrage-Designer zeigt dann im unteren Bereich alle passenden Datens&auml;tze an. Nun wollen wir daf&uuml;r sorgen, dass der Parameter auch beim Anzeigen des Berichts abgefragt und ber&uuml;cksichtigt wird.<\/p>\n<p>Vorher werfen wir jedoch noch einen Blick auf den Bereich <b>Berichtsdaten<\/b>. Hier finden wir n&auml;mlich nun einen neuen Eintrag namens <b>[@] ProductID <\/b>vor (siehe Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_261_009.png\" alt=\"Neuer Eintrag im Ordner Parameter\" width=\"324,6267\" height=\"301,6443\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Neuer Eintrag im Ordner Parameter<\/span><\/b><\/p>\n<h2>Eigenschaften des neuen Parameters festlegen<\/h2>\n<p>Den neuen Parameter wollen wir direkt anpassen. Die Eigenschaften des neuen Parameters zeigen Sie an, indem Sie doppelt auf den Eintrag im Ordner <b>Parameter <\/b>klicken. Dies &ouml;ffnet den Dialog <b>Berichtsparametereigenschaften<\/b> (siehe Bild 8).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_261_006.png\" alt=\"Eigenschaften des neuen Parameters\" width=\"574,6265\" height=\"419,4604\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Eigenschaften des neuen Parameters<\/span><\/b><\/p>\n<p>Der erste Bereich namens <b>Allgemein <\/b>erwartet die folgenden Informationen:<\/p>\n<ul>\n<li><b>Name<\/b>: Bezeichnung des Parameters, unter dem Sie diesen sp&auml;ter referenzieren k&ouml;nnen. Dieser wurde bereits mit <b>ProductID <\/b>gef&uuml;llt.<\/li>\n<li><b>Eingabeaufforderung<\/b>: Text, der erscheint, um den Wert des Parameters vom Benutzer abzufragen. Den vorausgef&uuml;llten Text &auml;ndern wir in <b>Filtern nach Produkt-ID:<\/b>.<\/li>\n<li><b>Datentyp<\/b>: Datentyp des Parameters. M&ouml;gliche Werte sind <b>Text<\/b>, <b>Boolean<\/b>, <b>Datum\/Uhrzeit<\/b>, <b>Ganze Zahl <\/b>oder <b>Gleitkommawert<\/b>. Wenn Sie <b>Datum\/Uhrzeit <\/b>ausw&auml;hlen, bekommt der Benutzer ein entsprechendes Steuerelement zur Auswahl des Datums angezeigt. In diesem Fall ben&ouml;tigen wir den Wert <b>Ganze Zahl<\/b>.<\/li>\n<li><b>Leeren Wert zulassen<\/b>: Gibt an, ob leere Zeichenketten angegeben werden k&ouml;nnen.<\/li>\n<li><b>NULL-Wert zulassen<\/b>: Gibt an, ob NULL-Werte zul&auml;ssig sind. Dies ist n&ouml;tig, wenn Sie wie weiter unten beschrieben alle Datens&auml;tze des Dataset anzeigen wollen.<\/li>\n<li><b>Mehrere Werte zulassen<\/b>: Gibt an, ob die Eingabe mehrerer Werte m&ouml;glich sein soll. Daf&uuml;r darf die vorherige Eigenschaft keine NULL-Werte zulassen. Sp&auml;ter zeigen wir ein Beispiel f&uuml;r diese Einstellung.<\/li>\n<\/ul>\n<h2>Anzeige eines Textfeldes zur Parametereingabe<\/h2>\n<p>Neben dem neuen Eintrag im Ordner Parameter sehen wir au&szlig;erdem nun, wozu die wei&szlig;en Felder oben im Berichtsentwurf n&uuml;tzlich sind. Hier zeigen die Reporting Services n&auml;mlich die Parametertexte und die Steuerelemente zur Eingabe der Parameter an &#8211; in unserem Fall ein Feld mit der Beschriftung <b>Filtern nach Produkt-ID:<\/b>.<\/p>\n<p>Wechseln wir nun in die Vorschau-Ansicht, bleibt dieses Eingabefeld erhalten und wir k&ouml;nnen nach der gew&uuml;nschten <b>Produkt-ID <\/b>filtern (siehe Bild 9).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_261_010.png\" alt=\"Eingeben des Parameterwertes und Filtern nach der Produkt-ID\" width=\"574,6265\" height=\"291,5385\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Eingeben des Parameterwertes und Filtern nach der Produkt-ID<\/span><\/b><\/p>\n<p>Das sieht doch schon sehr benutzerfreundlich aus und viel sch&ouml;ner als beispielsweise die Parameter-Dialoge von Access, in denen man jeden Parameter einzeln eingeben muss. Hier k&ouml;nnen Sie den Parameterwert &auml;ndern und mit der Schaltfl&auml;che <b>Bericht anzeigen <\/b>oder einfach durch Bet&auml;tigen der Eingabetaste die Anzeige aktualisieren.<\/p>\n<h2>Alle Datens&auml;tze anzeigen, wenn der Parameter NULL ist<\/h2>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000261\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000261?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000261\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"9fac6dd15a\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Dataset, das als Datenquelle eines Berichts der Reporting Services dient, ist selten statisch aufgebaut &#8211; also so, dass er immer alle Daten einer Tabelle oder Abfrage liefert oder einen bestimmten Teil. Stattdessen sollen Berichte oft Daten liefern, die sich auf einen bestimmten Zeitraum beziehen, auf einen bestimmten Kunden oder auch auf bestimmte Artikel oder Kategorien. In den bisherigen Artikeln haben wir erl&auml;utert, wie Sie Berichte auf Basis statischer Datenquellen erstellen. Der vorliegende Artikel f&uuml;gt die Verwendung von Parametern mit hinzu, damit der Benutzer genau festlegen kann, welche Daten der von ihm gew&auml;hlte Bericht liefern soll.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66012021,662021,44000024,44000023],"tags":[],"yst_prominent_words":[],"class_list":["post-55000261","post","type-post","status-publish","format-standard","hentry","category-66012021","category-662021","category-Berichte_und_Reporting","category-PowerApps"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000261"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000261\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000261"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}