Reporting services 是否有方法根据参数向SSRS数据集添加空行?
我有一份SSRS报告,它打印地址标签,每页30个,分3列 我已经创建了与找到的说明类似的报告 我很少需要打印30个标签。因此,为了节省纸张和资金,我想在这份报告中添加一个参数,编号为1-30,以决定开始打印页面上的哪个位置 如果我已经在一个页面上打印了16个标签,那么我可以在参数中选择17,我的结果将开始打印页面上的第17个标签Reporting services 是否有方法根据参数向SSRS数据集添加空行?,reporting-services,ssrs-2012,Reporting Services,Ssrs 2012,我有一份SSRS报告,它打印地址标签,每页30个,分3列 我已经创建了与找到的说明类似的报告 我很少需要打印30个标签。因此,为了节省纸张和资金,我想在这份报告中添加一个参数,编号为1-30,以决定开始打印页面上的哪个位置 如果我已经在一个页面上打印了16个标签,那么我可以在参数中选择17,我的结果将开始打印页面上的第17个标签 如果我可以使用该参数向结果集中添加许多空行,我就可以完成这项工作。这可能吗?我不确定这是最佳解决方案,但请参见下面的查询 DECLARE @StartColumn IN
如果我可以使用该参数向结果集中添加许多空行,我就可以完成这项工作。这可能吗?我不确定这是最佳解决方案,但请参见下面的查询
DECLARE @StartColumn INT = 6
;WITH CTE
AS (
SELECT *
,ROW_NUMBER() OVER (ORDER BY q.value) AS [rowNum]
FROM (
values('A'),('B'),('C'),('D'),('E'),('F'),('G'),('H'),('I'),('J'),('K'),('L')
) q (value)
)
SELECT CASE
WHEN CTE.rowNum > @StartColumn THEN CTE.value
ELSE NULL
END AS [Value]
FROM CTE
你会得到这样的结果
然后运行它,当报告中的值为空时,它将显示为空(我认为您使用报告中的组来打印多行)我不确定这是最佳解决方案,但请参见下面的查询
DECLARE @StartColumn INT = 6
;WITH CTE
AS (
SELECT *
,ROW_NUMBER() OVER (ORDER BY q.value) AS [rowNum]
FROM (
values('A'),('B'),('C'),('D'),('E'),('F'),('G'),('H'),('I'),('J'),('K'),('L')
) q (value)
)
SELECT CASE
WHEN CTE.rowNum > @StartColumn THEN CTE.value
ELSE NULL
END AS [Value]
FROM CTE
你会得到这样的结果
然后运行它,当报告中的值为空时,它将显示为空(我认为您使用报告中的组来打印多行)我遇到了类似的问题,例如选择要打印的标签,但每个客户端还需要打印多个标签。我的问题是我无法访问SQL(我们使用多维数据集)。我将SSRS 2012与SharePoint一起使用。它不漂亮,但确实有用 我的报告中有1个数据集。我有14个标签——7个向下,2个横向。每个标签都设置为自己的tablix 表格编号为1至14,从左上角开始。因此,1-7,从左“列”向下,然后从右“列”顶部向下8-14 令人烦恼的是,参数值从0开始,因此编号为0-13 每个tablix设置为通过特定参数值进行拟合,例如tablix 1设置为通过参数值0进行过滤,tablix 2设置为通过参数值1进行过滤,tablix 3设置为通过参数值2进行过滤,tablix 4设置为通过参数值3进行过滤,等等 我必须在标签上打印两次数据,所以我在tablix中使用了两个文本框 创建参数 用户将使用客户端Id(6位数字)作为参数值。我创建了一个名为ClientID的参数。对于提示,我输入“为每个所需标签替换000000。000000=空白标签”
- 将数据类型更改为文本
- 启用允许空白值(“”)
- 启用允许多个值
- 将“选择参数可见性”设置为“可见”
- 一无所获
- 选择指定值
- 单击Add并将值设置为00000,我这样做了14次(因此每个标签的默认值为000000)
=lookup(Parameters!ClientID.Value(0),
Fields!ID.Value,
UCase(Fields!Surname.Value),
"DataSet1")
& ", " &
lookup(Parameters!ClientID.Value(0),
Fields!ID.Value,
Fields!Given.Value,
"DataSet1")
为tablix创建过滤器
我还必须对每个tablix应用一个过滤器,以便它能够打印通过参数选择的客户机信息
在“过滤器”选项下的Tablix属性上
+单击添加
+从表达式中,我选择了我的ClientID
+从操作员那里,我选择了In
+在值中,我单击了Fx按钮来创建公式
=参数!ClientID.Value(0)
不显示默认参数值
显然,如果您将参数值保留为默认值(000000),它将打印此值。我能防止这种情况发生的唯一方法是使用字体颜色(我无法在工作中获得可见性)。 +右键单击文本框 +选择文本框属性 +点击字体选项 +在“颜色”下,单击“Fx”按钮 +使用以下公式:
=iif(Parameters!ClientID.Value(0)="000000", "White", "Black")
用于后续标签
对于第二个标签,我为括号中的值编制了索引,例如(0)到(1),用于文本框公式和过滤器,例如
=lookup(Parameters!ClientID.Value(1),
Fields!ID.Value,
UCase(Fields!Surname.Value),
"DataSet1")
& ", " &
lookup(Parameters!ClientID.Value(1),
Fields!ID.Value,
Fields!Given.Value,
"DataSet1")
在Tablix属性过滤器中
=Parameters!ClientID.Value(1)
=Parameters!ClientID.Value(13)
和文本框中的字体公式
=iif(Parameters!ClientID.Value(1)="000000", "White", "Black")
然后,我为每个后续标签编制了该编号的索引,因此最后一个标签(标签14)的值为:
=lookup(Parameters!ClientID.Value(13) etc
在Tablix属性过滤器中
=Parameters!ClientID.Value(1)
=Parameters!ClientID.Value(13)
和文本框中的字体公式
=iif(参数!客户端ID.值(13)=“000000”、“白色”、“黑色”)
因此,当用户运行报告时,他们会用适当的客户端Id替换000000000000000000等。我遇到了类似的问题,例如选择要打印的标签,但每个客户端还需要打印1个以上的标签。我的问题是我无法访问SQL(我们使用多维数据集)。我将SSRS 2012与SharePoint一起使用。它不漂亮,但确实有用 我的报告中有1个数据集。我有14个标签——7个向下,2个横向。每个标签都设置为自己的tablix 表格编号为1至14,从左上角开始。因此,1-7,从左“列”向下,然后从右“列”顶部向下8-14 令人烦恼的是,参数值从0开始,因此编号为0-13 每个tablix设置为通过特定参数值进行拟合,例如tablix 1设置为通过参数值0进行过滤,tablix 2设置为通过参数值1进行过滤,tablix 3设置为通过参数值2进行过滤,tablix 4设置为