crystal-reports - 字符串和日期时间错误消息 - 在同一公式字段上使用时
问题描述
我是 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}
它不断返回错误:
此处需要日期
解决方案
公式的结果必须是相同的数据类型,不能混合日期和字符串。所以你必须将日期转换为字符串。
str()
据我所知,Crystal Reports 中没有-function。我猜你的意思是cstr()
。
使用or
并不重要,因为它只是 . 的别名。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"
推荐阅读
- c++ - 如何在 Direct2D 窗口中正确初始化 Directwrite IDWriteTextLayout
- arrays - 在 foreach 循环中将一些变量添加到数组中
- android - 我如何追踪有影响力的人安装了多少我的 Android 应用程序?
- anylogic - AnyLogic 灵敏度分析可视化
- python - 尽管使用 Pip 安装 Pygame,但无法将 Pygame 导入 Python 3.7 IDLE(64 位)
- java - HHH000327:执行加载命令时出错:org.hibernate.exception.GenericJDBCException:无法提取结果集
- c++ - C++ 为什么 cin 读行两次?
- batch-file - 如何批量取消引用值
- c - 如何将单个字符串分配给一个指针数组中的元素?
- pytorch - 在 Pytorch 中计算 conv1d 层的形状