字符串和日期时间错误消息-在同一公式字段上使用时

时间:2019-03-26 14:38:37

标签: crystal-reports crystal-reports-2010

我是CR的新手,我试图获取发票公式,以有时作为日期阅读,有时作为文本阅读。这取决于客户应如何付款的“条款代码”:只有4个代码,有时为空。

我尝试使用

的不同语法
str() or totext 

但是我不知道正确的格式。我的尝试见下文:)

if isnull({PAYTERMS.TERMSCODE}) then {INVOICE.DATE}
else if {PAYTERMS.TERMSCODE}=1 then {INVOICE.DATE}+30 
else if {PAYTERMS.TERMSCODE}=2 then {INVOICE.DATE}+45
else if {PAYTERMS.TERMSCODE}=3 then {INVOICE.DATE}
else if {PAYTERMS.TERMSCODE}=4 then "Upon Receipt"
else {INVOICE.DATE}

它不断返回错误:

  

此处需要日期

1 个答案:

答案 0 :(得分:0)

公式的结果必须是相同的数据类型,不能混用日期和字符串。 因此,您必须将日期转换为字符串。

据我所知,Crystal Reports中没有str()功能。我猜你是说cstr()
使用cstr()totext()都没关系,因为totext()只是cstr()的别名。

公式应如下所示:

if isnull({PAYTERMS.TERMSCODE}) then cstr({INVOICE.DATE})
else if {PAYTERMS.TERMSCODE}=1 then cstr({INVOICE.DATE}+30)
else if {PAYTERMS.TERMSCODE}=2 then cstr({INVOICE.DATE}+45)
else if {PAYTERMS.TERMSCODE}=3 then cstr({INVOICE.DATE})
else if {PAYTERMS.TERMSCODE}=4 then "Upon Receipt"
else cstr({INVOICE.DATE})

此外,您可以设置cstr()的第二个参数来定义日期的输出格式:

cstr({INVOICE.DATE}, "MM/dd/yyyy")    // Output will be like "03/26/2019"