本指南演示了如何 在数据源级 筛选数据。 如果数据源包含大量数据、或者不能够在可容忍的时间期间内加载数据时,就可以使用这种方法。 如果应用程序的数据加载过程要求不高,那么请参阅 如何: 在报表级筛选数据。
要在数据源级筛选数据,则执行下列操作。
-
启动 MS Visual Studio (2005、2008 或 2010),并且新建一个或者打开一个现有的 Windows 窗体应用程序。
-
添加新空白报表 到项目中。
-
绑定报表 到 Northwind 示例数据库 (与 XtraReports 安装一起提供的 nwind.mdb 文件) 的 "CustomerReports" 视图。
-
把整个 CustomerReports 表从 Field List(字段列表) 窗口中拖放到报表的 Detail(细节) 带区,从而自动创建单元格都被绑定到相应数据字段的表格控件。
-
选中报表,并重置它的 XtraReportBase.DataAdapter 属性。
-
创建两个参数,并把它们的 Parameter.Type 属性都设置为 DateTime。
-
在底部的组件面板中,使用鼠标右键单击 customerReportsTableAdapter 项,并在被调用的菜单中,选择 Edit Queries in DataSet Designer(在数据集设计器中编辑查询)... 菜单项。
-
在数据集设计器中,选中 CustomerReportsTableAdapter,在 属性 窗口中展开 SelectCommand 部分,找到 CommandText 属性并单击它的省略号按钮。
-
Query Builder(查询生成器) 将出现。
在此对话框中,添加下列行到已有的 SQL 查询: WHERE (OrderDate > ?) AND (OrderDate < ?),并单击 确定 按钮。
这样将自动创建被赋值为报表参数的查询参数。
-
最后,以下列方式接管报表的 BeforePrint 事件。
C# 复制代码 using System; using DevExpress.XtraReports.UI; using System.Drawing.Printing; // ... private void XtraReport1_BeforePrint(object sender, PrintEventArgs e) { customerReportsTableAdapter.Fill(nwindDataSet1.CustomerReports, (DateTime)parameter1.Value, (DateTime)parameter2.Value); }
Visual Basic 复制代码 Imports System Imports DevExpress.XtraReports.UI Imports System.Drawing.Printing ' ... Private Sub XtraReport1_BeforePrint(ByVal sender As Object, ByVal e As PrintEventArgs) _ Handles MyBase.BeforePrint customerReportsTableAdapter.Fill(nwindDataSet1.CustomerReports, CDate(parameter1.Value), _ CDate(parameter2.Value)) End Sub
现在报表已经就绪。 运行打印预览窗体,并查看结果。