存储过程可以帮助您在应用程序之间实现逻辑的一致实现,提高性能,并使用户无需了解数据库中表的详细信息。存储过程的主要优点之一是,您可以传入参数以使数据库过滤记录集。这将返回较小的数据集,报表可以更快,更轻松地进行操作。
您可以在C1FlexReport向导中选择从存储过程中填充报表。要打开C1FlexReport向导,请完成以下操作之一:
- 在Visual Studio中,通过从C1FlexReport上下文菜单中选择“ 编辑报表”
- 在Visual Studio中,通过从C1FlexReport任务菜单中选择“ 编辑报表”
- 在C1FlexReportDesigner应用程序中,单击“报表”选项卡中的“ 新建报表”按钮
有关访问“ 编辑报表”链接的更多信息,请参见 设计时支持。
从存储过程填充报表与使用SQL语句或直接表没什么不同。在C1FlexReport向导的第一个屏幕中,单击省略号按钮以选择数据源。然后从可用数据源列表中选择一个存储过程:
选择下一步,然后继续执行向导。
与加载其他形式的数据一样,您有两个选择:
您可以使用DataSource的 ConnectionString和 RecordSource属性来选择数据源:
在设计器中,使用“ 数据源”对话框选择连接字符串(通过单击省略号按钮“ ...”),然后从列表中选择要使用的表或存储。例如:
connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Windows 8.1\Documents\ComponentOne Samples\Common\C1NWind.mdb;Persist Security Info=False;" RecordSource = "[Products by Category]"
(在这种情况下,存储过程名称包含空格,因此将其括在方括号中)。
您可以使用所需的任何方法创建数据源,然后将其分配给DataSource的Recordset属性:
此方法需要您编写代码,当您将数据缓存在某处并希望使用它来生成多个报表时,此方法很有用。它会覆盖先前的方法(如果您指定ConnectionString,RecordSource和 Recordset,则C1FlexReport使用Recordset)。
语法因要使用的连接/适配器的类型(OleDb,SQL,Oracle等)而异。获得正确语法的更简单方法是将表或proc从Visual Studio的Server Explorer拖到窗体上。这将添加所有必需的神秘元素,然后您可以遍历代码并挑选所需的片段。
您可以通过存储过程的名称将存储过程指定为数据源。如果该存储过程具有参数,则将它们作为参数传递。例如,在针对MSSQL和ADVENTURE_WORKS.mdf数据库构建的报表定义中,在C1FlexReportDesigner中指定的SQL请求(根据需要调整ADVENTUREWORKS_DATA.MDF的路径)是:
PARAMETERS Employee Int 290; DECLARE @RC int DECLARE @EmployeeID int set @EmployeeID = [Empoyee] EXECUTE @RC = [C:\ADVENTUREWORKS_DATA.MDF].[dbo].[uspGetEmployeeManagers] @EmployeeID