2

我无论如何都不是程序员。我只是一个好奇的低级管理员,试图根据我的需要修改报告。我有一个 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 行有相应的采购订单,当我这样做时它也只会显示一个空白字段。

我猜关于实际数据库的设置方式,我不知道有一些更大的事情。也许 AP 行实际上并没有引用 PO_ID,我只是假设他们这样做。

我所做的大多数谷歌搜索都回到了这里,所以我想我会发布我的问题。我搜索了类似的问题,但它们大多不符合我的要求。提前感谢您的任何建议。

4

1 回答 1

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#s?如果您尝试使用if {LAGL019Q.SOURCE} = "AP" then {LAGL019Q.PO_ID}它并显示为空白,那么这是一个很好的指标,表明 {LAGL019Q.PO_ID} 对于该记录实际上为空。

于 2012-12-11T20:23:46.437 回答