ActiveReports报表控件可以允许您在运行时对报表的数据源进行更改。本示例演示了应该如何在用户计算机上找到示例数据库文件的位置,并在运行时将其连接到报表。
本示例可以分为如下几个步骤:
•添加ActiveReports控件到Visual Studio项目;
•连接报表到设计时数据源;
•将控件添加到报表中以显示数据;
•添加代码以找到数据库路径;
•添加代码以在运行时更改数据源;
•添加代码以关闭数据连接;
•查看报表。
注意:本示例使用的是Northwind数据库。默认情况下,在ActiveReports报表控件中,该Northwind.mdb文件应该位于此目录下:[用户文件夹]\ ComponentOne Samples\ActiveReports 9\Data\NWIND.mdb。
当您完成本示例时,您可以在设计时和运行时获得一个类似于以下样式的布局。
设计时布局
运行时布局
如何将ActiveReport报表控件添加到Visual Studio项目
1. 创建一个新的Visual Studio项目。
2. 从项目菜单上选择“添加新项目”按钮。
3. 在弹出的“添加新项目”对话框中,选择ActiveReports 9区域报表(基于代码的),并在名称字段中,将该文件重命名为rptModifyDS。
4. 单击“添加”按钮,以便在报表设计器中打开一个新的区域报表。
要想了解更多有关如何添加不同的报表布局的信息,请您参阅“如何将ActiveReport报表控件添加到一个项目”这一章节。
如何将报表连接到数据源
提示:即使您在运行时对数据源进行更改,对设计时数据源的设置可以允许您从报表资源管理器中拖动字段到报表。
1. 如图所示,在Detail这个条状区域上单击数据源图标。
9. 在弹出的报表数据源对话框中,单击连接字符串旁边的OLE DB访问接口选项卡上的“生成”按钮。
10. 在弹出的数据链接属性窗口中,选择Microsoft Jet 4.0 OLE DB Provider,并单击“下一步”按钮以跳转到“连接”选项卡。
11. 单击省略号(...)按钮以浏览到您的数据库,例如NWind.mdb示例数据库。一旦您选择了合适的数据库路径,就请您单击“打开”按钮。
12. 单击“测试连接”按钮以查看您是否已成功连接到数据库。
13. 单击“确定”按钮来关闭数据链接属性窗口,并返回到报表数据源对话框。请注意,连接字符串字段会被自动填充。
14. 在OLE DB访问接口选项卡上的“查询”字段中,输入以下的SQL查询。
SQL查询
|
15. 单击“确定”按钮来保存数据源并返回到报表设计界面上。
如何创建报表的布局
1. 在报表的设计界面选择局部区域,并在属性窗口中,将“CanShrink” 属性设置为True。
2. 在报表资源管理器中,先展开“字段”节点,然后展开“绑定”节点。将下列字段拖到detail这个区域,并在属性窗口中对以下属性进行设置。
文本框1(产品ID)
属性名称 |
属性值 |
Location |
0,0 in |
Size |
0.5,0.2 in |
文本框 2 (产品名称)
属性名称 |
属性值 |
Location |
0.6,0 in |
Size |
2.8,0.2 in |
文本框 3 (库存量)
属性名称 |
属性值 |
Location |
3.5,0 in |
Size |
0.5,0.2 in |
Alignment |
Right |
文本框 4 (订购量)
属性名称 |
属性值 |
Location |
4.1,0 in |
Size |
0.5,0.2 in |
Alignment |
Right |
文本框 5 (单价)
属性名称 |
属性值 |
Location |
4.7,0 in |
Size |
0.9,0.2 in |
Alignment |
Right |
OutputFormat |
Currency |
如何查找数据库路径
1. 右键单击rptModifyDS的设计窗口的任何区域,并选择“查看代码”以显示报表的代码视图。
2. 将代码添加到报表,以便从注册表中获取示例数据库路径。
如何编写Visual Basic.NET代码
Visual Basic.NET中代码。粘贴于比代码视图顶部使用中的GrapeCity.ActiveReports语句略低的位置。
ImportsMicrosoft.Win32
Visual Basic.NET中代码。粘贴于报表类的内部。
PrivateFunctiongetDatabasePath()AsStringDimregKeyAsRegistryKey regKey=Registry.LocalMachine regKey=regKey.CreateSubKey("C:\Users\UserName\Documents\GrapeCitySamples\ActiveReports 9\Data\nwind.mdb") getDatabasePath=CType(regKey.GetValue(""),String)EndFunction |
如何编写C#代码
C#代码。粘贴于比代码视图顶部使用中的DataDynamics.ActiveReports语句略低的位置。
usingMicrosoft.Win32;
C#代码。粘贴于报表类别的内部。
privatestringgetDatabasePath() { RegistryKeyregKey=Registry.LocalMachine; regKey=regKey.CreateSubKey("C:\\Users\\UserName\\Documents\\GrapeCitySamples\\ActiveReports 9\\Data\\nwind.mdb"); return((string)(regKey.GetValue("")));
|
如何在运行时对数据源进行更改
要想在运行时更改数据源,需要以下步骤:
1. 双击rptModifyDS下面的灰色区域,以便给ReportStart事件创建一个事件处理方法。
2. 将代码添加到处理程序中,以便在运行时更改数据源。
如何编写Visual Basic.NET代码
下面的例子显示了该方法的代码,如下所示:
Visual Basic.NET代码。粘贴于比ReportStart事件略高的位置。
Dim conn As System.Data.OleDb.OleDbConnection Dim reader As System.Data.OleDb.OleDbDataReader |
Visual Basic.NET代码。粘贴于ReportStart事件的内部。
Dim dbPath As String = getDatabasePath() Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbPath + "\\NWIND.mdb" conn = New System.Data.OleDb.OleDbConnection(connString) Dim cmd As New System.Data.OleDb.OleDbCommand("SELECT * FROM Products WHERE UnitPrice = 18", conn) conn.Open() reader = cmd.ExecuteReader() Me.DataSource = reader
|
如何编写C#代码
下面的例子显示了该方法的代码,如下所示:
C#代码。粘贴于比ReportStart事件略高的位置。
private static System.Data.OleDb.OleDbConnection conn; private static System.Data.OleDb.OleDbDataReader reader; |
C#代码。粘贴于ReportStart事件的内部。
string dbPath = getDatabasePath(); string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbPath + "\\NWIND.mdb"; conn=new System.Data.OleDb.OleDbConnection(connString); System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("SELECT * FROM Products WHERE UnitPrice = 18", conn); conn.Open(); reader = cmd.ExecuteReader();
|
如何关闭数据连接
如何编写Visual Basic代码
1. 在rptModifyDS的设计视图中,下拉代码视图的左上方的字段,然后选择(rptModifyDS事件)。
2. 下拉代码视图右上方的字段,并选择ReportEnd事件。这将给ReportEnd事件创建一个事件处理方法。
3. 将代码添加到处理程序中,以关闭数据连接。
下面的例子显示了该方法的代码,如下所示:
Visual Basic.NET代码。粘贴于ReportEnd事件的内部。
reader.Close() conn.Close() |
如何编写C#代码
1. 单击rptModifyDS下面的灰色区域,以选择报表。
2. 单击属性窗口中的事件图标,以显示该报表中可用的事件。
3. 双击ReportEnd事件。这将给ReportEnd事件创建一个事件处理方法。
4. 将代码添加到处理程序中,以关闭数据连接。
下面的例子显示了该方法的代码,如下所示:
C#代码。粘贴于ReportEnd事件的内部。
reader.Close(); conn.Close(); |
如何查看报表
单击“预览”选项卡,以便在设计时以查看报表。
或
在报表浏览器中打开报表来进行查看。要想了解更多的相关信息,请您参阅“如何使用报表浏览器”这一章节。