Um Daten in MS SQL zu empfangen, können Sie SQL-Abfragen, Stored Procedures und Stored Functions verwenden. Früher haben wir bereits darüber nachgedacht, wie man dynamische Abfragen und Stored Procedures als Quelle für Berichtsdaten verwenden kann. In diesem Artikel werden wir eine Tabellen- und Skalarfunktion erstellen und diese im Bericht verwenden.
Ich möchte Sie daran erinnern, dass Tabellenfunktionen Tabellen und Skalarfunktionen Einzelwerte zurückgeben.
So, erstellen wir eine Tabellenfunktion in MS SQL.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
USE [testdb] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Description: Returns customers who live in the specified city -- ============================================= CREATE FUNCTION [dbo].[GetCustomersFromCity] ( @city VARCHAR(20) ) RETURNS TABLE AS RETURN ( SELECT * FROM dbo.CUSTOMER WHERE CITY = @city ) |
Die Funktion übernimmt einen Parameter - den Namen der Stadt - und gibt die Liste der Kunden in dieser Stadt zurück.
Lassen Sie uns sofort eine weitere, jetzt skalare Funktion hinzufügen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
USE [testdb] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Description: Returns last added customer -- ============================================= CREATE FUNCTION [dbo].[GetLastCustomer] () RETURNS VARCHAR(30) AS BEGIN DECLARE @Name VARCHAR(30) SELECT TOP 1 @Name = CONCAT(ind.FIRST_NAME, ' ', ind.LAST_NAME) FROM dbo.Customer cus JOIN dbo.Individual ind ON ind.CUST_ID = cus.CUST_ID ORDER BY cus.CUST_ID RETURN @Name END |
Diese Funktion übernimmt keine Parameter, sondern gibt den Namen der zuletzt registrierten Kunden zurück.
Kommen wir nun zum Bericht.
Zuerst erstellen wir einen Parameter im Bericht. Wir werden es verwenden, um den Namen der Stadt in die Funktion zu übertragen, um Daten zu erhalten.
Fügen Sie eine Verbindung zur MS SQL-Datenbank hinzu:
Als nächstes müssen Sie die Tabellen auswählen, aber wir werden die Schaltfläche Add SQL query verwenden.....
Geben Sie im nächsten Schritt den Namen der neuen Tabelle - TableFunction an. Klicken Sie auf “Next”.
Funktionen werden, im Gegensatz zu Stored Procedures, als Tabellen verwendet. Das heißt, um die Daten zu erhalten, benötigen Sie die Verwendung von Select.
Der nächste Schritt besteht darin, den Parameter "city request" hinzuzufügen. Wählen Sie in der Eigenschaft "Expression" den Berichtsparameter "Param". Fahren Sie fort und klicken Sie auf Fertig stellen.
Und erhalten Sie eine neue Datenquelle:
Fügen wir nun ein Dialogformular hinzu und ziehen den Berichtsparameter "Param" auf das Formular.
Ziehen Sie Felder aus der Tabelle TableFunction per Drag & Drop in das Datenband.
Starten wir den Bericht. Geben Sie den Wert im Dialogformular ein:
Und wir bekommen ein Beispiel von der Tabellenfunktion:
Erinnern Sie sich noch daran, dass wir am Anfang des Artikels zwei Funktionen erstellt haben? Dieses Beispiel ist noch einfacher, da ich dieser Funktion keinen eingehenden Parameter hinzugefügt habe. Erstellen wir eine weitere Datenquelle. Wie beim ersten Mal - Verknüpfung zu MS SQL. Und drücken Sie erneut die Schaltfläche SQL-Abfrage hinzufügen......
Der Aufruf der Skalarfunktion unterscheidet sich leicht vom Aufruf der Tabellenfunktion:
Wir verpassen alle anderen Schritte.
Fügen wir eine weitere Seite des Berichts hinzu und ziehen die Daten auf das Band, das einzige Feld aus der neuen Datenquelle - ScalarFunc.
Starten Sie den Bericht. Gehen Sie zur zweiten Seite:
Wie Sie sehen können, ist es einfach, die Funktionen zum Abrufen von Daten zu verwenden, und sie helfen Ihnen, Zeit bei der Entwicklung und Ausführung des Berichts zu sparen.