2008-11-24 35 views
2

這個問題是我前幾天詢問的一個問題的後續問題("Need to find duplicate records but exclude reversed transactions")如何隱藏已經被反轉的重複記錄(在水晶報告中)?

我有一個Crystal Report顯示客戶的燃料交易。有時重複的交易將被錯誤地導入。如果/當發現此錯誤時,管理員將反轉交易,從而留下兩個原始重複項和一個「反向」交易進行反轉。例如:

Date;  Qty;  Value;  Reversal 

1/14/08  5  20   N 
1/14/08  5  20   N 
1/14/08 -5  -20   Y 
1/20/08  8  56   N 
1/22/08  9  62   N 
1/22/08  9  62   N 

理想情況下,客戶只能看到SINGLE交易(或重複的交易尚未撤銷)。如果交易被扭轉,我們只希望他們看到原始的獨特記錄。示例(基於以上數據):

Date;  Qty;  Value; 

1/14/08  5  20 
1/20/08  8  56 
1/22/08  9  62 
1/22/08  9  62 

我已經有一個查詢將在我剛纔所描述的方式返回數據,但我需要將它與水晶報表,需要加入整合其他表格。如果我使用已有的SQL,性能是可怕的,所以我試圖查看是否可以在Crystal的公式中隱藏重複(顛倒)的事務,而不是使用SQL命令作爲連接到其他表的SQL。

如果我不清楚,請讓我知道。我非常感謝你的智慧!

回答

2

逆轉總是排在最後?如果是這樣,您可以使用公式來檢查下一條記錄並有條件地隱藏詳細信息部分。

所以在細節部分中添加一個公式,有條件地取消部分,如果它是一個逆轉記錄或者當前的記錄相匹配的後續逆轉記錄:

({Reversal} = "Y") OR 
({Date} = Next({Date}) AND {QTY} = Next({QTY}}) * -1 AND 
    {Value} = Next({Value}) * -1 AND Next({Reversal}) = "Y") 

如果逆轉總是匹配你可以簡化它:

({Reversal} = "Y") OR 
(Next({Reversal}) = "Y") 
0

是爲時已晚稍微改變數據模型,讓倒車和扭轉記錄,並以某種方式標記?我曾經在這樣一個系統中插入記錄,其中標記爲'C'(當前),如果反轉更新爲'O'(原始),並且反轉記錄標記爲'R'。所有隻希望看到當前數據的查詢都可以添加到WHERE子句中:

AND rec_type = 'C'