65.9K
CodeProject 正在变化。 阅读更多。
Home

关于将 Access 参数化报告导入 SQL 2000 Reporting Services

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.33/5 (3投票s)

2004年9月3日

4分钟阅读

viewsIcon

82884

downloadIcon

201

介绍如何将Access 2000参数化报表导入SQL 2000 Reporting Services。

引言

SQL Server 2000 Reporting Services允许导入Microsoft Access中创建的报表。本文将使用Visual Studio 2003讨论如何将MS Access 2000中创建的参数化报表导入Reporting Services的*.rdl格式。

Access报表详情

创建了一个RepSVC.mdb文件,其中只导入了Northwind数据库中的“Orders”表。该表的字段已清除所有查找或与其他Northwind数据库字段的连接。该表的视图设计在此处显示

在Access中使用查询设计器创建了一个“参数化查询”,以测试报表轻松导入SQL Server 2000 Reporting Services的程度。该查询的“SQL”语句在此处显示。该查询需要一个输入参数(国家名称)来生成查询结果。

SELECT Orders.CustomerID, Orders.OrderDate, Orders.RequiredDate, 
Orders.ShipName, Orders.ShipCity, Orders.ShipCountry
FROM Orders
WHERE (((Orders.ShipCountry)=[Country?]));

在Access中使用报表向导为“Denmark”生成了一个报表,下图为此报表的截图

导入Visual Studio 2003的详情

在Visual Studio 2003中创建一个名为AccessProject的报表项目,参考ASP.NET和SQL 2000 Reporting Services中的示例。该项目带有一个空的Report文件夹。从“Project”菜单项下拉列表中,单击“Import”,如下图所示

此操作会自动指向“MS Access”,并打开“My Documents”(MDB文件的默认位置)的浏览窗口。指向之前创建的RepSvc.mdb文件,该文件已包含一个名为“Which Country”的报表。这将立即在Reports文件夹中创建一个“WhichCountry.rdl”文件,如下图所示

在创建报表文件“WhichCountry.rdl”时,Reporting Service提取了一个“DataSet”,其中包含原始查询中指定的所有字段,如下图所示

下一个屏幕截图显示了报表的“Layout”,它类似于Access报表,如下图所示

如果右键单击上图所示的位置,您可以看到报表设计的全部详细信息。您可以逐项查看并根据需要进行修改。下一个屏幕截图显示了“Report parameters”窗口,您可以在其中输入参数

虽然可以在“Report Parameters”窗口中进行输入,但可以通过DataSet1下拉列表旁边的省略号来输入参数,如下图所示。

将使用参数 shipcountry='Denmark',因此窗口“Parameter”选项卡中的输入如下所示

插入参数后,可以通过右键单击报表文件WhichCountry.rdl并单击“Run”来构建并运行报表。生成的报表部分如下所示

交互式报表

在上一节中,参数值对“ShipCountry=Denmark”被硬编码到DataSet 属性中。然而,还有另一种更简便的插入参数值的方法。与前一种情况相同,DataSet 属性已设置为占位符变量,如下图所示

在此处的报表预览选项卡中,清除“Null”复选框将打开文本字段以输入参数值。如果保留该复选框选中,报表将返回零条记录。下一张幻灯片显示了“Country? = France”的一些记录。

打印报表

此报表预览中的“Print”按钮是“灰显”的。不确定正式版本是否也是如此(这恰好是试用版)。但是,通过单击上图中所示的“file save”图标,您将看到几种保存文件的选择。从这里,可以根据可用资源轻松地以Adobe格式或TIFF格式打印。

结论

尽管此处展示的是一个简单的参数化报表的导入,但SQL 2000 Reporting Services在导入文件方面做得非常出色。这是否向后兼容之前的Access版本仍有待观察。转换似乎是瞬时的,这也许是因为示例的数据集非常小。还观察到,当调用导入时,数据库中的所有报表都会自动同时转换为*.rdl文件,并且报表名称相同(x.rpt转换为x.rdl)。

© . All rights reserved.