返回不同数据类型的水晶配方

时间:2012-08-30 17:51:32

标签: crystal-reports crystal-reports-2008

我有一个要求,根据所选参数,表字段应显示为文本或日期。例如,如果用户选择true,则作为日期时间类型的OriginDate字段应显示为报告中的日期,否则应显示为文本。我尝试创建一个类似下面的公式,然后将公式放在报告的详细信息部分,但由于返回的数据类型不同,它不起作用。

if {?Mailmerge}=true then
ToText({Travel.OriginDatetime}, "M/d/yy")
else
{Travel.OriginDatetime}

有没有办法可以让我满足上述要求,这样我最终不会创建2个报告,其中字段显示为文本,其他字段显示为日期?

2 个答案:

答案 0 :(得分:3)

尝试创建一个公式,将字段作为字符串totext({Travel.OriginDateTime},"M/d/yy")返回,并将其覆盖原始字段{Travel.OriginDateTime},并根据{?MailMerge}的值有条件地抑制它们,这样只有一个显示在报告的任何一个实例中。

答案 1 :(得分:1)

如果我关注你,你只想在M/d/yy为真时显示?MailMerge,否则你想要显示完整日期?

您无法在同一公式中显示不同的数据类型,因此只需将条件语句的两个部分转换为字符串:

if {?Mailmerge}=true then
ToText({Travel.OriginDatetime}, "M/d/yy")  // 8/30/12
else
ToText({Travel.OriginDatetime}, "M/d/yy hh:mm:ss")  // 8/30/12 02:06:00

我不知道您的日期在数据库中的确切含义,但您可以使用上述内容作为基于?MailMerge参数格式化日期的指南。