我正在使用带有C#的SQL Server Reporting Services 2008作为ASPX网页。
说我有食物表。
然后说我把食物分组。 对于每种食物,我需要展示相当多的信息,包括:
以下是我在SSRS中如何做到这一点的初步想法:
我的问题:
我以为我能够拥有以下数据集:
然后,在页脚中,我将特定于食物的数据集链接到该特定组的食物ID。
但是,我不能在组的页脚中引用多个数据集。
有没有办法能够将页脚中的其他数据集链接到我的桌子上的食物ID?
感谢任何帮助!
答案 0 :(得分:1)
您可以根据当前FoodId
在其他数据集上查找值
为你的小组:
=Lookup(Fields!FoodId.Value, Fields!FoodId.Value, Fields!SimilarFoods.Value, "SimilarFoodsDataset")
这假定FoodId
值之间存在一对一的关系。如果您有一个值列表,请为相关表格中的每个FoodId
说几行类似的食物,那么您希望使用子报告或LookupSet
。
<强>子报表强>
子报表是一个很好的选择,因为它们可以自动工作,并为格式化和布局提供了很大的灵活性。如果您想要显示多个字段,这当然是可以使用的选项。
创建名为SimilarFoods
的新报告。它应该只是一个列出类似食物的表,并有一个名为FoodId
的参数。它的数据集将包含如下SQL:
SELECT FoodId, SimilarFood
FROM SimilarFoods
WHERE FoodId = @FoodId
返回主报告,在表格的组页脚中插入工具箱中的Subreport
,并将ReportName
设置为您在上方创建的SimilarFoods
报告(您可能希望合并页脚行的单元格,以便报表占据表格的整个长度。右键点击报告,然后选择Subreport Properties...
,点击Parameters
标签,添加一个参数,Name
设置为FoodId
,值设置为[FoodId]
(您可以从下拉列表中选择此字段)。
现在运行您的报告,对于每种食物,您将在组页脚中获得类似食物的列表。
<强> LookupSet 强>
LookupSet的工作方式与Lookup
类似,但顾名思义它会返回一组结果。结果不能直接在文本框中使用 - 您必须先操作它。但是,如果您只需要显示一个字段,那么这是一个不错的选择。
你可以在这样的表达式中使用它:
=Join(LookupSet(Fields!FoodId.Value, Fields!FoodId.Value, Fields!SimilarFood.Value, "SimilarFoodsDataset"), vbCrLf)