我绝不是程序员。我只是一个好奇的低级管理员,试图根据我的需要修改报告。我有一个Crystal Reports .rpt文件,显示采购订单和针对这些采购订单的付款。我的问题是付款行没有参考采购订单编号。目前,我必须导出报告,然后在excel中进行操作,并手动将每条AP线匹配到其匹配的采购订单编号。我希望AP系列也显示采购订单编号。
报告中有一个名为“@Voucher_PO_ID”的字段,其中包含以下公式:
if {LAGL019Q.RECORD_TYPE} = "3" then
if {LAGL019Q.SOURCE} = "AP" then
{LAGL019Q.TRANS_REF_NUM}
else if {LAGL019Q.SOURCE} = "PO" or {LAGL019Q.SOURCE} = "RQ" then
{LAGL019Q.PO_ID}
else " "
else " "
据我了解,这个公式是说如果SOURCE是AP(应付账款),那么该行显示TRANS_REF_NUM(支付的支票号码),但如果SOURCE是PO(采购订单)那么显示PO_ID(采购订单编号)。
同样,对编程知之甚少,我希望它能像修改if then语句一样简单:
if {LAGL019Q.SOURCE} = "AP" then
{LAGL019Q.TRANS_REF_NUM} and {LAGL019Q.PO_ID}
但这不起作用。我可以通过添加{LAGL019Q.TRANS_REF_NUM} +“blah”将一些文本附加到{LAGL019Q.TRANS_REF_NUM}的末尾,所以我不确定为什么它不会添加另一个字段。
我不会让我改变公式的这一部分:
" if {LAGL019Q.SOURCE} = "AP" then
{LAGL019Q.TRANS_REF_NUM}"
如果我只是尝试:
if {LAGL019Q.SOURCE} = "AP" then
{LAGL019Q.PO_ID}
它仍然不起作用,我不知道为什么?如果是应付帐款行,我希望它显示相应的PO_ID。当我这样做时它只显示一个空白字段,即使我知道AP行有相应的PO。
我猜我有一些更大的事情,我不知道如何设置实际的数据库。也许AP线实际上没有引用PO_ID,我只是假设它们。
我带来的大多数谷歌搜索都会回到这里,所以我想我会发布我的问题。我搜索过类似的问题,但他们大多数都不属于我的联盟。提前感谢任何建议。
答案 0 :(得分:0)
我认为您唯一的问题是您尝试使用逻辑运算符(AND
关键字)而不是字符串运算符(+
或&
字符)。希望它就像这样简单:
if {LAGL019Q.RECORD_TYPE} = "3" then
if {LAGL019Q.SOURCE} = "AP" then
"This is the transaction#: " + {LAGL019Q.TRANS_REF_NUM} +
", and this is the PO ID: " + {LAGL019Q.PO_ID}
else if {LAGL019Q.SOURCE} = "PO" or {LAGL019Q.SOURCE} = "RQ" then
{LAGL019Q.PO_ID}
else " "
else " "
如果{LAGL019Q.PO_ID} =“AP”,那么此应该结果:
This is the transaction#: <TheActualNumber>, and this is the PO ID: <TheActualPOID>
EDIT1:另一个想法:您对数据库实际上是否拥有这些记录的有效PO#的确定程度如何?如果您尝试使用if {LAGL019Q.SOURCE} = "AP" then {LAGL019Q.PO_ID}
并且它显示为空白,那么这是一个非常好的指标,{LAGL019Q.PO_ID}实际上为该记录为空。