1

我有一个使用日期参数的报告(所以必须是 SSRS 中的日期时间,这很糟糕)。当用户输入诸如“5/1”之类的日期时,它会创建一个 DateTimeOffset 数据类型,我无论如何都找不到将其转换为其他任何内容、格式化或连接到文本框中。我尝试将日期转换为字符串等。我得到的是:

从“DateTimeOffset”类型到“String”类型的转换无效。(“字符串”被我尝试将其转换为的任何内容替换)

当用户在日期字段中键入“5/1”和“5/31”时,肯定有一种方法可以让文本框显示“从 2013 年 5 月 1 日到 2013 年 5 月 31 日”?微软真的认为懂电脑的人想拿起鼠标来使用他们的日期选择器而不是使用制表符吗?

4

2 回答 2

1

试试下面的表达式:

="From " & Format(Parameters!Param1.Value.DateTime, "M/d/yyyy") & " to ..... etc"

为了测试这个表达式,我创建了一个新报告,添加了一个 DateTime 参数,并在文本框中输入了“5/1”,然后按 Enter。该报告带有以下文本框:

从 2013 年 1 月 5 日到......等

对于我的语言环境,这是正确的,因为在输入 DateTime 值时,假定天数早于月份。查看报告时,文本框也会更新并显示:

5-1-2013 0:00:00 +01:00

由此您应该能够推断并将其用于第二个参数,扩展表达式以显示您在报告中需要的确切字符串。

于 2013-05-28T18:29:16.017 回答
1

当用户省略年份时,Parameters!Param1.Value.DateTime 会有所帮助,但当用户决定包含年份时,它就会崩溃。我无法让它在这两种情况下工作。

尝试这个。

将日期参数值作为字段包含在结果集中。您的 SQL 可能如下所示:

SELECT field1, field2, Convert(date, @FromDate) [FromDate_param] FROM table

然后您可以在 SSRS 中创建一个表达式,例如:

 ="From " & Format(First(Fields!FromDate_param.Value), "M/d/yy")
于 2014-03-05T01:06:14.130 回答