0

我将 SQL Server Reporting Services 2008 与 C# 一起用于 ASPX 网页。

假设我有一桌食物。

然后说我按食物分组我的桌子。对于每种食物,我需要展示相当多的信息,包括:

  • 味道相似的食物清单
  • 可能的健康风险清单
  • 评级
  • 等等

这是我关于如何在 SSRS 中执行此操作的最初想法:

  1. 从获取所有食物的数据表开始
  2. 按食物 ID 对表格进行分组
  3. 对于每个组,在页脚中创建一个列表,其中包含该食物的所有信息(类似食物、健康风险、评级等)的字段/表格

我的问题:

我以为我可以拥有以下数据集:

  • 得到所有的食物
  • 获取与食物 ID 相关的类似食物
  • 获得与食物 ID 相关的健康风险
  • 获取与食物 ID 相关的评级等

然后,在页脚中,我会将特定于食物的数据集链接到该特定组的食物 ID。

但是,我不能在组的页脚中引用多个数据集。

有什么方法可以将页脚中的其他数据集链接到食物 id 即时分组我的桌子?

任何帮助表示赞赏!

4

1 回答 1

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工具箱中的 a 并将其设置为您在上面创建ReportNameSimilarFoods报表(您可能希望合并页脚行的单元格,以便报表占据整个表格长度)。右键单击报告并选择Subreport Properties...,单击Parameters选项卡并添加Name设置为FoodId和值设置为的参数[FoodId](您可以从下拉列表中选择此字段)。

现在运行您的报告,对于每种食物,您将在组页脚中获得类似食物的列表。

查找集

LookupSet的工作方式类似Lookup,但顾名思义,它返回一组结果。结果不能直接在文本框中使用 - 您必须先对其进行操作。但是,如果您只需要显示一个字段,那么这是一个不错的选择。

您可以在这样的表达式中使用它:

=Join(LookupSet(Fields!FoodId.Value, Fields!FoodId.Value, Fields!SimilarFood.Value, "SimilarFoodsDataset"), vbCrLf)
于 2013-06-19T02:45:19.020 回答