我有两个Tablix(表格)和一个数据集。 它们与此数据集绑定
Serial No. | Name
______________|________________
SN0003 | Beckham
SN0005 | Henry
SN0012 | Rooney
SN0119 | Ji Sung
SN0200 | Gerrard
在我的报告中,我需要拆分两个Tablix 它将显示如下......
(在“Up to Buttom”之前是“从左到右”)
Serial No. | Name || Serial No. | Name
______________|________________ || _______________|______________
SN0003 | Beckham || SN0005 | Henry
SN0012 | Rooney || SN0119 | Ji Sung
SN0200 | Gerrard || |
左表是Tablix1和 右表是Tablix2
我认为对每个Tablix使用此FilterExpression。
= RowNumber(Nothing) mod 2 = 0
Tablix1的(左表)
= RowNumber(Nothing) mod 2 = 1
for Tablix2(右表)
但是这条消息错误......
"A FilterExpression for tablix ‘Tablix1’ uses the RowNumber function.
RowNumber cannot be used in filters."
它不能在Filter中使用Rownumber。 我该怎么办?如果我不编辑数据集,是否可能。
答案 0 :(得分:6)
您是否可以首先编辑您正在恢复的数据集?您可以使用
为此添加ROW_NUMBER
字段
SELECT
...,
ROW_NUMBER() OVER(ORDER BY SerialNo ASC) AS RowNum,
...
然后您返回的数据集看起来像
Serial No. | Name | RowNum
______________|________________|__________
SN0003 | Beckham | 1
SN0005 | Henry | 2
SN0012 | Rooney | 3
SN0119 | Ji Sung | 4
SN0200 | Gerrard | 5
然后您可以在RowNum mod 2 = 0
修改强>
或者,如果您无法更改基础数据集,则可以使用RunningValue和CountDistinct来聪明。
CountDistinct
将为每行提供数据集中匹配的行数(因此,假设序列号是唯一的,通常为1)
RunningValue
会在表格中的每一行中为您提供越来越多的值...并且可以将所有这些值相加,即`CountDistincts'。
将表的行可见性设置为
对于Tablix1
=(RunningValue(CountDistinct(Fields!SerialNo.Value), Sum, "DataSetName") mod 2) = 0
对于Tablix2
=(RunningValue(CountDistinct(Fields!SerialNo.Value), Sum, "DataSetName") mod 2) = 1
答案 1 :(得分:0)
[解决]谢谢,Jonas
这是我的数据表。我为store seq_no创建了新列。 通过右键单击>添加列并更改名称“SEQ_NO”
下一步,我通过使用vb
编码将值设置为SEQ_NO列 Dim dt As dsProductionControl.TL_PRODUCTION_SCHEDULE_DETAILSDataTable = DsProductionControl.TL_PRODUCTION_SCHEDULE_DETAILS
For i As Integer = 1 To dt.Rows.Count
dt.Rows(i).Item("SEQ_NO") = i
Next i
并在SEQ_NO
的报告的Tablix中设置过滤器 =Fields!SEQ_NO.Value Mod 2 = 0
再次感谢Jonas。