Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 是否有方法根据参数向SSRS数据集添加空行?_Reporting Services_Ssrs 2012 - Fatal编程技术网

Reporting services 是否有方法根据参数向SSRS数据集添加空行?

Reporting services 是否有方法根据参数向SSRS数据集添加空行?,reporting-services,ssrs-2012,Reporting Services,Ssrs 2012,我有一份SSRS报告,它打印地址标签,每页30个,分3列 我已经创建了与找到的说明类似的报告 我很少需要打印30个标签。因此,为了节省纸张和资金,我想在这份报告中添加一个参数,编号为1-30,以决定开始打印页面上的哪个位置 如果我已经在一个页面上打印了16个标签,那么我可以在参数中选择17,我的结果将开始打印页面上的第17个标签 如果我可以使用该参数向结果集中添加许多空行,我就可以完成这项工作。这可能吗?我不确定这是最佳解决方案,但请参见下面的查询 DECLARE @StartColumn IN

我有一份SSRS报告,它打印地址标签,每页30个,分3列

我已经创建了与找到的说明类似的报告

我很少需要打印30个标签。因此,为了节省纸张和资金,我想在这份报告中添加一个参数,编号为1-30,以决定开始打印页面上的哪个位置

如果我已经在一个页面上打印了16个标签,那么我可以在参数中选择17,我的结果将开始打印页面上的第17个标签


如果我可以使用该参数向结果集中添加许多空行,我就可以完成这项工作。这可能吗?

我不确定这是最佳解决方案,但请参见下面的查询

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)
  • 创建tablix

    然后我为每个标签创建了一个tablix。他们都指向我的数据集(想象中的“数据集1”)。它们由一个细胞组成。这与我的标签可打印区域的高度和宽度相匹配

    创建文本框

    我在tablix单元格中添加了我的第一个文本框。我把它做得比小桌板的宽度稍微小一点,刚好从小桌板的顶部往下

    创建了第二个文本框并将其向下移动,直到它适合我的需要。它使用了与第一个文本框相同的公式。(记得我需要打印两次客户名称)

    我在报告中使用了对数据集的查找。是的,尽管tablix已经基于此数据集

    对于第一个标签,两个文本框的公式为:

    =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设置为