使用 C1Report 控件 > 创建、加载和呈现报表 > 加载报表数据 > 从一个存储过程加载数据 |
存储过程(或sprocs)可以帮助您实现一个跨应用程序逻辑的一致实现,提高性能,且用户不需要知道数据库中表的详情。存储过程的一个主要优点是你可以传入参数让数据库过滤数据集。它会返回一个更小的数据集,在报表操作时会更快速更方便。
你可以在C1Report向导中使用一个存储过程填入一个报表。打开C1Report向导完成以下的一个:
关于编辑报表(Edit Report)连接的更多信息,请查看C1Report Tasks 菜单或C1Report Context 菜单。
使用存储过程填充一个报表与使用SQL语句或直接使用表一样。在C1ReportWizard中,点击省略号按钮选择一个数据源。然后从可用的数据源列表中选择一个存储过程:
选择下一步(Next)然后继续。
关于加载其他形式的数据,你有两种选择:
在Designer中,使用数据源(DataSource)对话框选择连接字符串(通过点击省略号按钮“...”),然后从列表中选择你想使用的表或存储过程。例如:connectionstring = "Provider=SQLOLEDB.1;Integrated Security=SSPI;" + "Persist Security Info=False;Initial Catalog=Northwind;Data Source=YOURSQLSERVER;" recordsource = "[Employee Sales by Country]('1/1/1990', '1/1/2010')"
(这种情况下存储过程的名字必须有空间,因此用方括号括住它们)。
这个方法需要你写代码,当你有数据缓存在某个地方并想使用它生成报表时它是非常有用的。它重写了之前的方法(如果你指定了ConnectionString, RecordSource和Recordset, C1Report将会使用RecordSet。 )根据你想使用的连接/适配器的类型(OleDb,SQL,Oracle等),语法会不同。
确保语法正确最简单的方法是从Visual Studio的服务器资源管理器上拖拽表或存储过程至一个表单。这将添加所有需要的隐藏元素,然后你可以浏览代码,挑出你想要的部分。
你可以通过它们的名称将存储过程指定为数据源。如果这个存储过程含有参数,你可以以参数形式传递它们。例如针对 MSSQL 和ADVENTURE_WORKS.mdf数据库创建的报表定义,下面是在C1Report设计器中指定的SQL请求(根据需要调整ADVENTURE_WORKS.MDF的路径):
PARAMETERS Empoyee Int 290;
DECLARE @RC int
DECLARE @EmployeeID int
set @EmployeeID = [Empoyee]
EXECUTE @RC = [C:\ADVENTUREWORKS_DATA.MDF].[dbo].[uspGetEmployeeManagers]
@EmployeeID