0

我有一个 Crystal 报表(版本 XI r3),它使用 SQL 命令对象来检索其数据。在命令对象中,我有一个日期参数。我的数据库使用以 YYYYMMDD 格式存储为数值的“日期”字段,因此我将参数指定为数字并添加了提示“以 YYYYMMDD 格式输入日期”。

我的用户不太关心这个。他们希望能够使用日期选择器和/或能够以 MM/DD/YYYY 格式输入日期。

到目前为止,我的调查使我相信,如果我将参数转换为真正的日期数据类型,我将无法在 SQL 命令对象中使用它,因为我无法将它从日期转换为数字在 SQL 语句中,所以我必须在 Crystal Select Wizard 中而不是在我的 SQL 语句中进行日期范围控制,这可能会使我的报告速度降低一到两个数量级(因为我正在打表由该日期字段索引,并且每天有很多记录)。

我错了吗?有没有办法让用户以 MM/DD/YYYY 格式输入日期,并且仍然能够在我的 SQL 命令对象中将其用作数字 YYYYMMDD 参数?

4

1 回答 1

2

恐怕您必须修改原始命令以将数字参数替换为日期参数,并在命令本身内进行从日期到数字的转换。

因此,在命令中:

WHERE MyDate = {?MyNumberParam)

会成为:

WHERE MyDate = (YEAR({?MyDateParam})*10000) + (MONTH({?MyDateParam})*100) + DAY({?MyDateParam})

最后一部分将 2012 年 4 月 20 日转换为 (2012*10000 + 4*100 + 20) = 20120420,我相信这就是您想要的。

于 2012-04-20T15:49:42.237 回答