报表服务。文本框或Tablix的位置取决于参数或数据集字段。

问题描述 投票:1回答:1

在SSRS 2016中,我有一个报表,针对多个客户。每个客户都有单独的信笺,创建后缝合在报表后面。

现在,我想在运行时根据一个xy位置值改变一个文本框或tablix的位置,该值存储在每个客户的应用程序配置中。

如何实现这个目标?在位置属性字段中输入一个表达式是行不通的。

如果没有动态定位,我需要为每个客户创建一个报表,当你有几十个客户时,这是一个非常糟糕的变通方法。

reporting-services ssrs-2016
1个回答
2
投票

要垂直地、动态地定位东西,或者至少给人一种它在做这个的印象,那么你可以试试下面的方法。


要知道,这是我的头顶,未经测试。


假设信头上最小的logo是3cm,最大的是6cm。

将一个文本框(我们将其称为 padTextBox)从报表顶部3cm处开始。将高度设置为小的东西(0.2cm或其他)。

接下来在下面添加你的文本框或tablix。padTextBox.

现在我们需要动态地设置 padTextBox.

我们可以通过在运行时添加动态数量的空行来实现。

听起来你已经有足够的信息来确定Y的位置。你需要将其转换为空行数,而空行数又取决于在 padTextBox 因此,例如,Y位置5cm可能需要3行空白,在 padTextBox 所以文本框的底部位于5cm处。

要添加空行,我想你必须添加一些自定义代码,因为我认为没有一个内置的函数可以重复字符串。

下面的代码应该可以做到

Public Function GetBlankRows(n as integer) as String
dim s as string
s = ""
dim i as integer
for i = 1 to n
    s = s &  vbcrlf
next i

return s

End Function

最后,我们需要设置 padTextBox 到类似

=Code.GetBlankRows(Fields!YLines.Value)

=Code.GetBlankRows(Parameters!YLines.Value)

你懂的...

希望这能帮到你...


0
投票

除非不能在运行时动态设置位置,否则在builddeploy时间设置呢?

报告文件是XML的。所以在源头控制下,有一个主文件给所有客户。当需要部署时,可以用脚本(即PowerShell)打开文件,从配置文件或数据库中读取特定客户的位置,并在xml中临时设置相关的位置值.然后为这个客户构建和部署报表,并将更改的内容还原。

© www.soinside.com 2019 - 2024. All rights reserved.