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

Crystal reports Crystal Reports-帮助使用一个公式显示多个报告字段,crystal-reports,report,field,Crystal Reports,Report,Field,我决不是一个程序员。我只是一个好奇的低级管理员,试图根据我的需要修改报告。我有一个Crystal Reports.rpt文件,显示采购订单和针对这些采购订单的付款。我的问题是付款行没有引用采购订单号。目前,我必须导出报告,然后在excel中进行检查,并手动将每个应付款行与其匹配的采购订单号进行匹配。我希望AP行也显示采购订单号 报告中有一个名为“@concedure\u PO\u ID”的字段,其中包含以下公式: if {LAGL019Q.RECORD_TYPE} = "3" then i

我决不是一个程序员。我只是一个好奇的低级管理员,试图根据我的需要修改报告。我有一个Crystal Reports.rpt文件,显示采购订单和针对这些采购订单的付款。我的问题是付款行没有引用采购订单号。目前,我必须导出报告,然后在excel中进行检查,并手动将每个应付款行与其匹配的采购订单号进行匹配。我希望AP行也显示采购订单号

报告中有一个名为“@concedure\u PO\u 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 " "
据我所知,该公式表示,如果来源是应付账款,则该行显示TRANS_REF_NUM(付款的支票编号),但如果来源是采购订单,则显示采购订单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}
还是不行,我不知道为什么?如果它是一个应付账款行,我希望它显示相应的采购订单ID。当我这样做时,它只显示一个空白字段,即使我知道应付账款行有相应的采购订单

我猜关于实际数据库是如何设置的,有一些更大的事情我不知道。也许AP行实际上并不引用PO_ID,我只是假设它们确实引用


我带回来的大多数谷歌搜索都在这里,所以我想我应该把我的问题贴出来。我搜索过类似的问题,它们大多是我无法回答的。感谢您的建议。

我想您唯一的问题是,您试图使用逻辑运算符(
关键字),而不是字符串运算符(
+
&
字符)。希望它能这么简单:

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”,则这将导致:

这是交易记录#::,这是采购订单ID:


EDIT1:另一个想法是:你有多确定数据库实际上保存了这些记录的有效PO?如果你试图使用
如果{LAGL019Q.SOURCE}=“AP”然后{LAGL019Q.PO_ID}
结果为空,那么这是一个很好的指标,表明{LAGL019Q.PO_ID}对于该记录实际上为空。

我担心你的编辑可能是正确的。我尝试了:如果{LAGL019Q.SOURCE}=“AP”,那么{LAGL019Q.PO_ID},它返回一个空白。我觉得奇怪的是,在数据库中,应付账款行的记录没有对应的采购订单的值。例如,如果存在5美元的采购订单123,然后针对采购订单123支付5美元,则5美元付款应参考采购订单123。奇怪的是,在数据库中,它不会。谢谢你的回答。如果你只是在寻找所显示的内容,我会将第一行更改为:if{LAGL019Q.RECORD_TYPE}=“3”和{LAGL019Q.SOURCE=“AP”,然后……你可以删除第二个else”语句。如果你在寻找更多的类型/源,那么这种编码是有意义的。