我正在使用Report Builder 3 Matrix并指定行组和列组。基本上它是一个主要的细节类型情况,在我的情况下,实体是继电器和联系人。每个继电器都有多个触点。下面给出了两者的一些重要特性。
继电器:
名称(简单字段),
键入(枚举字段),
联系人(联系人实体的导航字段。一对多)
联系人:
DisplayName(简单字段)
AllotedToSheet(简单字段)。
以下是报告的外观。列是从"显示名称"生成的。使用列分组的联系人表的字段。
现在问题就出现了。我在上面的报告中标记了2个区域。情况就是这样,因为我有两种类型的继电器(现在说)。 "显示名称" Contacts表的字段对于特定的中继类型是相同的,因此我在报告中得到两组列(如标记的那样)。基于中继类型,我想为整个报告生成或仅显示一组列,因为另一组对中继类型没有意义,每个中继类型将有自己生成的报告(rdl)。那我该怎么做呢。
总之,对于使用列组生成的列,如何根据某些数据库field.value条件过滤掉或隐藏报表中的某些列
修改:报表设计器视图
答案 0 :(得分:2)
您是否尝试将列可见性设置为基于表达式?
将表达式设置为:
=IIf(Fields!RelayType.Value = "Relay1", false, true)
根据需要更新不同的继电器/列组合。
答案 1 :(得分:1)
我认为最好通过SQL中的连接来链接表。这将删除数据集中填充的额外列。
答案 2 :(得分:0)
受@ glh建议直接修改DataSet查询的启发,我只能生成与特定Relay_Type相关的记录(在我的例子中是列)。在Query中,我只需添加一个SQL WHERE 子句,它将加载仅特定Relay_Type的详细信息记录。这样,与特定Relay_Type相关的唯一列是由DataSet中的Query生成的。因此,无需更改可见性表达式来隐藏列。事实上,Visibility表达式并没有隐藏列,它只是在报告中占用了空白。所以修改SQL似乎是我案例的更好选择。
NIRVAN。