2012-12-11 50 views
2

我不是任何程序員。我只是一個好奇的低級管理員,試圖根據我的需要修改報告。我有一個Crystal Reports .rpt文件,顯示採購訂單和針對這些採購訂單的付款。我的問題是,付款行不會引用採購訂單號。目前,我必須導出報告,然後通過excel進行處理,並手動將每個AP行匹配到其匹配的採購訂單編號。我希望AP行也顯示採購訂單編號。Crystal Reports - 幫助用一個公式顯示多個報表字段

有在它被稱爲「@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 " " 

據我瞭解,這個公式是說如果來源是(應付賬款)的AP,然後該行顯示TRANS_REF_NUM(支付的支票號碼),但是如果SOURCE是PO(採購訂單),則顯示PO_ID(採購訂單號)。

同樣,知道得很少編程,我希望它會像修改,如果再語句簡單的東西:

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

我認爲你唯一的問題是,你正在嘗試使用一個邏輯運算符(在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:另外一個想法:如何確定你是否認爲數據庫實際上爲這些記錄保存有效的採購訂單號?如果您試圖使用if {LAGL019Q.SOURCE} = "AP" then {LAGL019Q.PO_ID}並將其變爲空白,那麼這是一個相當不錯的指標,表示該記錄的{LAGL019Q.PO_ID}實際上爲空。

+0

我擔心你的編輯可能是正確的。我試過: if {LAGL019Q.SOURCE} =「AP」then {LAGL019Q。PO_ID} 然後它返回一個空白。 對我來說,在數據庫中,對於應付賬款行記錄來說,它不會爲其相應的採購訂單保留一個值。例如,如果有5美元的採購訂單123,然後是對採購訂單123的5美元付款,那麼5美元的付款應該引用採購訂單123.它對我來說奇怪,在數據庫中它不會。 感謝您的回覆。 – hyosafi

+0

如果您正在尋找所顯示的內容,我會將第一行更改爲:if {LAGL019Q.RECORD_TYPE} =「3」AND {LAGL019Q.SOURCE =「AP」THEN ...然後您可以刪除第二個else語句。如果你有這個尋找更多的類型/來源,那麼這種編碼是有道理的。 –