сообщение об ошибке строки и даты - при использовании одного поля формулы - PullRequest
0 голосов
/ 26 марта 2019

Я новичок в 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 голосов
/ 26 марта 2019

Результат формулы должен иметь тот же тип данных, вы не можете смешивать даты и строки. Таким образом, вы должны преобразовать даты в строку.

Насколько я знаю, в 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"
...