SSRS报告-导出到Excel日期时间过滤

时间:2018-10-09 10:33:10

标签: sql-server reporting-services ssrs-2008 rdl

从动态数据集中填充SSRS报告,即数字列和列顺序可能会根据条件而有所不同,并且此报告在尝试导出为ex​​cel时会有所不同。但是在导出日期列过滤不起作用。发现原因是我以字符串格式绑定列。

了解样本数据格式。这里的列和列顺序可能会根据条件而变化。

enter image description here

我将其转换为以下格式,并将其作为数据集传递给SSRS。

enter image description here

并通过与ROW_NO和COL分组来填充报告

然后我尝试将DOB列转换为日期时间。

要将DOB转换为日期格式,将sql查询中的DOB返回类型更改为datetime,请在SSRS中使用CDate()将列值转换为日期时间,并以自己的格式(dd-mmm-yyyy)格式化。

以下用于转换为日期时间的表达式:

IIF((Fields!COL.Value="DOB") ,CDate(Fields!VALUE.Value),(Fields!VALUE.Value))

但是对于日期时间以外的列数据类型显示#Error:

enter image description here

1 个答案:

答案 0 :(得分:0)

转到 DOB 列中的详细信息文本框。并使用以下表达式:

=Format(CDate(Fields!DOBValue.Value), "dd-MM-yyyy")

这样,您的 DOB 列中的日期将显示23-01-2018

注意:如果在Fields!DOBValue.Value字段中只是日期,则该表达式才起作用。如果存在N/A,则会引发错误。然后,您必须先清除N/A

如果要将其导出到Excel,则需要在报表属性(使用您的区域)中设置语言,然后转到您在上面的表达式中在文本框属性>数字中编写的文本框>选择日期格式。

更新

根据您更新的问题,我认为我找到了错误。问题是您写的月份名称与报告语言结合在一起。我的报告语言设置为DE。对我来说,以下作品:

=CDate("15-Mai-94") 'Result 05.05.1994 

但这很重要:

=CDate("15-May-94") 'Result =Error

第二种方法有效,当我将报告语言设置为EN时,第一种方法会引发错误