从动态数据集填充 SSRS 报告,即数字列和列的顺序可能会因条件而异,而此报告是关于尝试导出到 excel 的。但在导出日期列过滤不起作用。找到原因是我绑定(bind)了字符串格式的列。
要理解的示例数据格式。这里的列和列的顺序可能会因条件而异。
我正在将其转换为以下格式并作为数据集传递给 SSRS。
并通过使用 ROW_NO 和 COL 分组来填充报告
然后我尝试将 DOB 列转换为日期时间。
为了将 DOB 转换为日期格式,将 SQL 查询的 DOB 返回类型更改为日期时间,使用 SSRS 中的 CDate()
将列值转换为日期时间,并以自己的格式格式化(dd-mmm-yyyy ).
以下用于转换为日期时间的表达式:
IIF((Fields!COL.Value="DOB") ,CDate(Fields!VALUE.Value),(Fields!VALUE.Value))
但是对于日期时间以外的列数据类型显示#Error:
最佳答案
转到 DOB 列中的详细信息文本框。并使用以下表达式:
=Format(CDate(Fields!DOBValue.Value), "dd-MM-yyyy")
这样,您的 DOB 列中的日期将显示 23-01-2018
注意:如果 Fields!DOBValue.Value
字段中只有日期,则表达式才有效。如果有 N/A
,它将抛出错误。然后你必须先清除N/A
。
如果您想将其导出到 Excel,您需要在报告属性中设置语言(使用您所在的地区),然后转到您在 Textbox properties > Number 选择了日期格式。
更新
根据您更新的问题,我想我发现了错误。问题是您将月份名称与报告语言结合使用。我的报告语言设置为 DE
。对我来说,以下作品:
=CDate("15-Mai-94") 'Result 05.05.1994
但是这个剂量起作用了:
=CDate("15-May-94") 'Result =Error
第二个有效,当我将报告语言设置为 EN
但第一个抛出错误时
关于sql-server - SSRS 报告 - 导出到 excel 日期时间过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52718920/