Para obtener datos en MS SQL, puede utilizar consultas SQL, procedimientos y funciones almacenados. Ya hemos hablado de cómo utilizar consultas dinámicas y procedimientos almacenados como una fuente de datos de informe. En este artículo vamos a crear una tabla y una función escalar para utilizarlas en el informe.
Recordemos que las funciones de tabla devuelven tablas, mientras que las funciones escalares devuelven valores singulares.
Vamos a crear una función de tabla en 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 ) |
La función toma un parametro que es el nombre de la ciudad y devuelve una lista de usuarios en esta ciudad.
Vamos a añadir una más, ahora una función escalar:
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 |
Esta función no acepta parámetros pero recupera el nombre del último cliente registrado.
A continuación, pasamos al informe.
En primer lugar, cree un parámetro en el informe. Lo utilizarémos para transferir el nombre de la ciudad a la función para recibir datos.
Añada una conexión con la base de datos MS SQL:
A continuación, en el siguiente paso, tenemos que seleccionar las tablas, pero utilizaremos el botón Add SQL query…
En el siguiente paso damos nombre a la nueva tabla, TableFunction. Presione Next.
Las funciones, a diferencia de procedimientos almacenados, se guardan como tablas. Es decir, tiene que utilizar Select para obtener datos.
En el siguiente paso tenemos que añadir el parametro de consulta city. En esta propiedad Expression seleccione el parametro Param del informe. Seguimos. Haga clic en Finish.
Y obtenemos una nueva fuente de datos:
Ahora añada el formulario de diálogo y arrastre el parametro del informe Param sobre ello.
Arrastre los campos desde la tabla TableFunction sobre la banda Data.
Arranque el informe. Introduzca el valor en el formulario de diálogo:
Y obtenemos una muestra desde la función de tabla:
¿No ha olvidado que al principio hemos creado dos funciones? Este ejemplo es aun más fácil, ya que no he añadido ningún parametro de entrada a esta función. Vamos a crear una fuente de datos más. Como en el primer caso, la conexión con MS SQL. Y, de nuevo, haga clic en el botón Add SQL query ...
Invocar una función escalar es un poco diferente de invocar una función de tabla:
Omitimos todos los pasos que quedan
Añada una página del informe más y arrastre los datos a un campo singular desde la nueva fuente de datos, ScalarFunc.
Arranque la aplicación. Pase a la segunda página:
Como puede ver, utilizar funciones que le ayudarán ahorrar tiempo a la hora de desarrollar y ejecutar informes para obtener datos es muy fácil.