Crystal Reports - 帮助使用一个公式显示多个报表字段

时间:2012-12-11 19:37:34

标签: crystal-reports report field

我绝不是程序员。我只是一个好奇的低级管理员,试图根据我的需要修改报告。我有一个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,我只是假设它们。

我带来的大多数谷歌搜索都会回到这里,所以我想我会发布我的问题。我搜索过类似的问题,但他们大多数都不属于我的联盟。提前感谢任何建议。

1 个答案:

答案 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}实际上为该记录为空。