2

我正在使用 Report Builder 3 矩阵并指定行组和列组。基本上它是一个主细节类型的情况,在我的例子中,实体是继电器和联系人。每个继电器有多个触点。下面给出了两者的一些重要特性。

中继:
名称(简单字段)、
类型(枚举字段)、
联系人(到联系人实体的导航字段。一对多)

联系人:
DisplayName(简单字段)
AllotedToSheet(简单字段)。

这是报告的样子。列是使用列分组从联系人表的“显示名称”字段生成的。

生成的报告样本

现在问题来了。我在上面的报告中标记了 2 个区域。之所以如此,是因为我有两种类型的继电器(比如现在)。联系人表的“显示名称”字段对于特定继电器类型是相同的,因此我在报告中得到两组列(如标记)。基于中继类型,我只想为整个报告生成或显示一组列,因为另一组对于中继类型没有意义,并且每个中继类型都有自己生成的报告 (rdl)。那么我该如何实现这一点。

总之,对于使用 Column Groups 生成的列,如何根据某些数据库 field.value 条件从报告中过滤或隐藏某些列

编辑:报表设计器视图 在此处输入图像描述

4

3 回答 3

2

您是否尝试将列可见性设置为基于表达式?

在此处输入图像描述

在此处输入图像描述

将表达式设置为:

=IIf(Fields!RelayType.Value = "Relay1", false, true)

根据需要更新不同的继电器/列组合。

于 2013-04-16T15:21:53.177 回答
1

我认为最好通过 SQL 中的连接来链接表。这将删除数据集中填充的额外列。

于 2013-04-17T09:41:09.213 回答
0

受@glh 建议直接修改 DataSet 查询的启发,我只能生成与特定 Relay_Type 相关的记录(在我的情况下为列)。在查询中,我只需要添加一个 SQL WHERE子句,该子句将加载仅特定 Relay_Type 的详细信息记录。这样,与特定 Relay_Type 相关的唯一列由 DataSet 中的 Query 生成。因此无需更改可见性表达式来隐藏列。事实上,可见性表达式并没有隐藏列,它只是“将其删除”在报告中占用空间。因此,对于我的情况,修改 SQL 似乎是更好的选择。

涅槃。

于 2013-04-17T11:48:38.230 回答