如何在FastReport.Net中使用SQL函数

下载FastReport.Net最新版本

要在MS SQL中获取数据,可以使用sql查询,存储过程和存储函数,之前我们已经讨论了如何使用动态查询和存储过程作为报表数据源,在本文中,我们将创建一个表和标量函数,并在报表中使用它们,表函数返回表,标量函数返回单个值。首先,在MS SQL中创建一个表函数:

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
)

该函数采用一个参数——城市名称,并返回此城市中的客户列表。再添加一个现在的标量函数:

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表拖到Data band,运行报表,在对话框中输入值:

从表函数中获取样本:

文章开头我们创建了两个函数,这个例子更简单,因为我没有向这个函数添加一个传入参数。让我们再创建一个数据源,另外,至于第一次——connection to MS SQL,再次单击Add SQL query ...按钮,调用标量函数与调用表函数略有不同:

跳过所有其他步骤:

再添加一页报表并将数据拖动到新数据源的单个字段——ScalarFunc,运行报表,转到第二页:

如上所示,使用函数获取数据非常简单,它们将帮助您在开发报表及其执行时节省时间。

原文地址:https://www.cnblogs.com/wxchuachua/p/10220229.html

时间: 2024-08-29 04:50:21

如何在FastReport.Net中使用SQL函数的相关文章

如何在C语言中调用Swift函数

在Apple官方的<Using Swift with Cocoa and Objectgive-C>一书中详细地介绍了如何在Objective-C中使用Swift的类以及如何在Swift中使用Objective-C中的类.在后半部分也介绍了如何在Swift中使用C函数,不过对于如何在C语言中使用Swift函数却只字未提.这里我就为大家分享一下如何在C语言中调用Swift函数. 我们首先要知道的是,所有Swift函数都属于闭包.其次,Swift函数的调用约定与Apple为Clang编译器贡献的B

如何在FastReport.Net中生成标签类型报表

[下载FastReport.Net最新版本] 文本将介绍如何在FastReport.Net中生成标签类型报表,详细步骤如下所示: Add New Item -> Label Wizard 标签可以是bar codes(条形码),business cards(名片),addresses(地址),transport waybills(运单)等.它们可以用自粘纸或普通纸印刷.使用标签的内置FastReport模板或创建自己的模板.标签模板是一个报表模板,其中包含指定的页面大小和打印页面上的标签数量.

Oracle 中的sql函数以及分页

SELECT LPAD('Page 1',15,'*.') "LPAD example" FROM DUAL; 1.分页查询 (1)方法一:使用  between  and 来实现分页 select * from ( select emp.*,rownum rn from emp ) where rn between 4 and 6 (2)方法二:使用 rownum 来实现分页 select * from ( select emp.*,rownum rn from emp where

如何在Flex标签中写事件函数

在事件变量值中直接写函数语句,如果是多条语句,则用";"号隔开. 示例如下: <mx:Box id="label" backgroundColor="{outColor}" width="{labelWidth}" height="{labelHeight}"                horizontalAlign="center" verticalAlign="m

如何在python文件中测试sql语句

在manage.py的同级目录下新建一个run.py import os if __name__ == '__main__': #加载Django项目的配置信息 os.environ.setdefault("DJANGO_SETTINGS_MODULE","myblog.settings") #导入Django,并启动Django项目 import django django.setup() #导入相应的models from person import model

EF中使用SQL函数

SqlFunctions引用命名空间:using System.Data.Objects.SqlClient; db.Favorite.Where(_ => SqlFunctions.PatIndex(keyWord, _.ItemName) > 0 && _.UserId == itemId); 与 db.Favorite.Where(_ => _.ItemName.Contains(keyWord) && _.UserId == itemId); 类似

ThinkPHP使用SQL函数进行查询

//SQL函数查询 $products=$pro->where(array("FIND_IN_SET('".$type."',type)",'num'=>array('gt',0)))->order('time desc')->select();  //where条件的第一个元素使用了SQL函数,当使用SQL函数的时候不能使用关联数组的方式,使用普通的索引数组的方式组合成字符串才行:得到的SQL语句是:SELECT * FROM `tp_pr

如何在sqlite3连接中创建并调用自定义函数

#!/user/bin/env python # @Time :2018/6/8 14:44 # @Author :PGIDYSQ #@File :CreateFunTest.py '''如何在sqlite3连接中创建并调用自定义函数''' import sqlite3,hashlib #自定义函数 def md5sum(t): return hashlib.md5(t).hexdigest() #在内存中创建临时数据库 conn = sqlite3.connect(":memory:"

sql中的 开窗函数over() 聚合函数 排名函数

开窗函数与聚合函数一样,都是对行的集合组进行聚合计算.它用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列.反正我理解这个函数已经使用好子查询或者是其它方式求得聚合列的值给我合并. 以书中的例子一步一步来介绍,假设要计算所有人员的总数,我们可以执行下面的SQL语句: SELECT COUNT(FName) FROM T_Person 这种方式比较直接,只返回一个聚合列的值,没有任