sql-server - SSRS 报告 - 导出到 excel 日期时间过滤

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

从动态数据集填充 SSRS 报告,即数字列和列的顺序可能会因条件而异,而此报告是关于尝试导出到 excel 的。但在导出日期列过滤不起作用。找到原因是我绑定(bind)了字符串格式的列。

要理解的示例数据格式。这里的列和列的顺序可能会因条件而异。

enter image description here

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

enter image description here

并通过使用 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:

enter image description here

最佳答案

转到 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/

相关文章:

sql-server - ADO.NET 调用 T-SQL 存储过程导致 SqlTimeoutException

sql-server - SQL Server 上的 Laravel 迁移使用数据类型 NCHAR,我如何强制它使用 CHAR?

sql - T-SQL - 选择 XML 节点值,如果节点不存在则选择 NULL

sql - 跟踪存储过程/SSIS/SSRS 中的 SQL 依赖关系

ssrs-2008 - 计算字段上的 SSRS 聚合

c# - 在 ASP.NET 项目中将数据类型从 Oracle 转换为 SQL Server

reporting-services - 消除报告中的分页符

reporting-services - 如果子组转到另一个页面,则重复父组

reporting-services - 通过 Internet Explorer 在 Report Manager 中报告损失格式的 SSRS

xml - SSRS 报告上的 XSLT