我们举一个级联参数的例子,用SQL Server 2005自带的AdventureWorks数据库作为数据源。AW里面有三张表:Product, ProductSubcategory和ProductCategory。
我们现在就来实现级联参数的报表,报表最终会有两个参数:Category和Subcategory。用户首先要选择Category,然后Subcategory参数列表中就只会有被选择的Category下的Subcategory,用户选择Subcategory,然后报表就会显示选定Subcategory下的产品信息。
第一步:
为Category参数准备一个数据集“Category”作为参数的数据源,数据集的查询代码相当简单:
SELECT ProductCategoryID, Name
FROM Production.ProductCategory
将新建的数据集绑定到Category参数上,并指定Category参数的Label为Name,Value为ProductCategoryID。如下图:
第二步:
为Subcategory参数准备一个数据集“Subcategory”作为参数的数据源,这个数据集的查询就要使用Category参数来对数据进行过滤,查询代码如下:
SELECT ProductSubcategoryID, Name
FROM Production.ProductSubcategory
WHERE ProductCategoryID = @categoryID
将新建的数据集绑定到Subcategory参数上,并指定Subcategory参数的Label为Name,Value为ProductSubcategoryID。如下图:
第三步:
现在可以写报表的数据源定义了,这个就更简单了:
SELECT Production.Product.Name, Production.Product.StandardCost, Production.Product.ListPrice
FROM Production.Product
WHERE Production.Product.ProductSubcategoryID = @subcategoryID
然后就是拖一个Table数据控件,绑定上数据源就OK了。