s-s-rS 在文本框表达式中重复文本

Posted

技术标签:

【中文标题】s-s-rS 在文本框表达式中重复文本【英文标题】:s-s-rS repeating text within a textbox expression 【发布时间】:2018-10-03 14:44:56 【问题描述】:

是否可以编写一个表达式,将某些文本一遍又一遍地重复指定的重复次数或直到文本框中的空间用完?

需要显示的文本来自共享数据集中的字段,并且可以根据用户连接到的数据库而改变。

我需要循环的是

="~~"&First(Fields!SchemaText.Value,"Selection") &"~~"

如果可能的话,我想要的输出是

~~Text~~~~Text~~~~Text~~~~Text~~~~Text~~

s-s-rS中基本上可以循环表达式吗?

【问题讨论】:

【参考方案1】:

我没有看到用表达式写的方法。

我认为最简单的方法是在 VB 中创建一个函数。

Function RepeatText(ByVal Text As String, ByVal Loops AS Integer) As String 

Dim F AS Integer

RepeatText = ""

For F = 1 to Loops 

    RepeatText = RepeatText & "~~" & Text  & "~~"

Next F

End Function

您的文本框表达式将类似于:

=CODE.RepeatText(Fields!SchemaText.Value, 4) 

您想用一些代码替换 4 以确定您希望文本重复的次数,或者您可以更改代码以便它根据另一个字段计算出多少次。

=CODE.RepeatText(Fields!SchemaText.Value, Fields!SOME_OTHER_FIELD.Value)

然后让代码弄清楚:

Function RepeatText(ByVal Text As String, ByVal Type AS String) As String 

Dim F AS Integer
Dim END AS Integer

If Type = "DB1" then END = 1 
If Type = "DB2" then END = 2 
If Type = "DB3" then END = 3 

RepeatText = ""

For F = 1 to END

    RepeatText = RepeatText & "~~" & Text  & "~~"

Next F

End Function

【讨论】:

这正是我所追求的! @汉诺威 这个解决方案的一个更灵活的版本是在代码中删除波浪线的连接并传入已经添加波浪线的字符串。这样,您将拥有一个很好的可重用函数,可以应用于多个场景,如果您愿意,您甚至可以传入额外的参数,这些参数将是“之前”和“之后”字符串以在您的连接中使用。【参考方案2】:

我不确定你是否可以直接将其写入表达式..

如果我是你,我会尝试编写一个新的 1 列数据集,其中包含你想要包含文本值的行数。然后,在文本框表达式中,我将尝试使用 join() 获取结果。

我没有测试,对不起,可能我错了。

【讨论】:

【参考方案3】:

s-s-rS 有一个名为 StrDup 的文本函数。 我不知道该功能何时可用,或者该功能是否一直可用。

语法:StrDup(integer, (char | object | string))

EX: =StrDup(3,"结束...") 输出:结束...结束...结束...

EX: =StrDup(3, Chr(149)) & "文本" 输出:•••文本

看这里: https://www.mssqltips.com/sqlservertip/4093/sql-server-reporting-services-string-manipulation/

或者只是在互联网上搜索“s-s-rS StrDup”

【讨论】:

以上是关于s-s-rS 在文本框表达式中重复文本的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS2008 文本框中数据集字段求和的表达式

s-s-rS 2008 矩阵中文本框表达式的总列

s-s-rS 报告在 IF 子句中使用聚合表达式?

在 s-s-rS 2008 中,如何在文本框中同时显示多值参数的标签和值?

从 s-s-rS 中的表达式将参数传递给数据集

获取s-s-rS中数据集的SQL脚本