s-s-rS 报告为 Join 表达式提供错误
Posted
技术标签:
【中文标题】s-s-rS 报告为 Join 表达式提供错误【英文标题】:s-s-rS Report giving error for Join expression 【发布时间】:2021-06-07 08:45:24 【问题描述】:我在我的 s-s-rS 报告中声明了一个多值参数。该参数是一个日期,它有多个值,如:
06/01/2021
05/01/2021
04/01/2021
现在,当我选择日期为 06/01/2021, 05/01/2021
时,表达式应显示为 Reportname_
,其中包含前几个月的第一个和最后一个日期。
示例:如果我选择日期为
06/01/2021
05/01/2021
04/01/2021
那么结果应该是
报告名称_05/01/2021-05/31/2021_04/01/2021-04/30/2021_03/01/2021-03/31/2021
我尝试加入但出现错误。我使用的表达式是
Join(dateadd(“m”,-1,dateserial(year(Parameters!date.Value(0)), month(Parameters!date.Value(0)), 1)) &
"-" &
dateadd(“m”,0,dateserial(year(Parameters!date.Value(0)), month(Parameters!date.Value(0)), 0)), "_")
【问题讨论】:
请提供有关返回错误的表达式的更多详细信息 @niktrs textrun 'textbox1.Paragraphs[0].TextRuns[0]' 的值表达式包含错误:[BC30518] 重载解析失败,因为无法使用这些调用任何可访问的 'Join'参数:'Public Function Join(SourceArray() As String, [Delimiter As String = " "]) As String':'String' 类型的值不能转换为'String 的一维数组'。 'Public Function Join(SourceArray() As Object, [Delimiter As String = " "]) As String': 'String' 类型的值不能转换为'Object 的一维数组'。 加入(dateadd(“m”,-1,dateserial(year(Parameters!date.Value(0)),month(Parameters!date.Value(0)),1))&" -"&dateadd(“m”,0,dateserial(year(Parameters!date.Value(0)),month(Parameters!date.Value(0)),0)),"_") 【参考方案1】:您必须使用自定义代码来解析您的参数并创建字符串表达式
将以下自定义代码添加到您的报告中
Public Function ParseDate(ByVal parameter as Parameter) as String
Dim s as String
Dim seperator as String
Dim dt as Date
For i as integer = 0 to parameter.Count-1
dt = DateSerial(Year(parameter.Value(i)), Month(parameter.Value(i)), 1)
s = s + seperator + Format(DateAdd("m",-1,dt),"MM/dd/yyyy") + "-" + Format(DateAdd("d",-1, dt),"MM/dd/yyyy")
seperator = "_"
Next
Return s
End Function
对于返回报告名称和日期值的文本框,请使用以下表达式
=Globals!ReportName & "_" & Code.ParseDate(Parameters!Date)
【讨论】:
谢谢,如果选择日期是 06/20/2021,那么解析的表达式日期也应该是 05/01/2021-05/31/2021。那么我们需要在上面的函数中改变什么? 它需要使用 DateSerial 来获取月份的第一天。其余的计算可能保持不变。我已更新我的答案以反映变化以上是关于s-s-rS 报告为 Join 表达式提供错误的主要内容,如果未能解决你的问题,请参考以下文章