Как использовать SQL функции в FastReport .NET

14.08.2018

Для получения данных в MS SQL можно использовать sql запросы, хранимые процедуры и хранимые функции. Ранее мы уже рассмотрели, как использовать динамические запросы и хранимые процедуры в качестве источника данных отчета. В этой статье мы создадим табличную и скалярную функцию и используем их в отчете.

Напомню, табличные функции возвращают таблицы, а скалярные функции возвращают одиночные значения.

Создадим табличную функцию в 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
)

Функция принимает один параметр – название города, а возвращает список клиентов в этом городе.

Давайте сразу добавим еще одну, теперь скалярную функцию:

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

Эта функция не принимает параметров, а возвращает ФИО последнего зарегистрированного клиента.

Теперь перейдем к отчету.

Прежде всего создадим параметр в отчете. Мы будем использовать его для передачи названия города в функцию, для получения данных.

 

Добавим подключение к базе данных MS SQL:

 

Далее, на следующем шаге нам предлагается выбрать таблицы, но мы воспользуемся кнопкой Add SQL query…

 

На следующем шаге задаем имя новой таблицы – TableFunction. Нажимаем Next.

 

Функции, в отличие от хранимых процедур используются как таблицы. То есть для получения данных нужно использовать Select.

 

На следующем шаге нам нужно добавить параметр запроса city. В его свойстве Expression выбираем параметр отчета Param. Переходим далее и нажимаем Finish.

И получаем новый источник данных:

 

Теперь добавим диалоговую форму и перетащим на нее параметр отчета – Param.

Перетаскиваем поля из таблицы TableFunction на бэнд Данные.

Запустим отчет. Вводим значение в диалоговой форме:

 

И получаем выборку из табличной функции:

Вы не забыли, в начале статьи мы создали две функции? Этот пример еще проще, потому что я не добавил входящий параметр в эту функцию. Создадим еще один источник данных. Также, как и в первый раз – подключение к MS SQL. И опять нажимаем кнопку Add SQL query…

Вызов скалярной функции немного отличается от вызова табличной функции:

Пропускаем все остальные шаги.

 

Добавим еще одну страницу отчета и перетаскиваем на бэнд данные единственное поле из нового источника данных – ScalarFunc.

Запустим отчет. Переходим на вторую страницу:

 

Как видите, использовать функции, для получения данных очень просто, и они помогут вам сэкономить время при разработке отчета и его выполнении.

2 сентября 2024

Обзор облачного решения для создания и управления отчетами

МоиОтчеты Облако — это мощное облачное решение для создания и управления отчетами, обеспечивающее широкий спектр возможностей, от создания документов в различных форматах до интеграции с корпоративными системами.
12 августа 2024

Как собрать и установить плагин Postgres в FastReport .NET

В этой статье описывается подключение к базе посредством плагина FastReport .NET для дизайнера отчетов из Visual Studio через NuGet-сервер.
8 августа 2024

Как установить FastReport .NET и его компоненты в Windows

Пошаговая инструкция по онлайн и ручной установке через регистрационный код FastReport .NET и его компонентов в Windows.