2012-10-09 84 views
1

我正在嘗試使用history_table編寫報告。 我想知道如果只有兩個字段已經改變了ex(ss.dem1)和(ss.dem2)在表 如果其他任何變化像電話或地址在該表也不要在報告中提出或壓制它。我只想看到這些數據只有這兩個字段已經改變,每次它都改變爲歷史。
enter image description hereCrystal Report僅基於兩個字段更改顯示歷史記錄

這將是我想要完成的一個例子。

我也用試圖用抑制公式,但只給了我最後一個記錄,並沒有表現出我,就像我會像上面的例子

不onlastrecord和next(PATID)= PATID和未來(ssdem1) = ssdem1 或 not onlastrecord and next(PATID)= PATID and next(ssdem2)= ssdem2

非常感謝您的幫助。

+0

什麼是您的歷史表中的主鍵?發生更改時是否有日期/時間字段? – Ryan

+0

是的表中有一個日期/時間字段我也試過使用抑制公式,但似乎不能正常工作不onlastlast記錄和下一個(PATID)= PATID和next(ssdem1)= ssdem1 或 notlastlast記錄和下一個(PATID )= PATID和next(ssdem2)= ssdem2 – Dagz200

+0

patid =客戶端ID – Dagz200

回答

1

在DB端,你可以做一個自連接,只保留記錄,其中那些你感興趣的已經改變的項目,前一個:

select WHATEVER 
from HISTORY H1, HISTORY H2 
where H1.PAT_ID=H2.PAT_ID 
and (H1.DEM1 <> H2.DEM1 
     or H1.DEM2 <> H2.DEM2 
     etc...) 

或者,您可以通過訂購的報告PAT_ID,然後按編輯的日期/時間,然後抑制沒有任何變化的行,這聽起來像你正在嘗試做的事情。如果你發佈確切的抑制公式,我可能會看到你錯在哪裏。應該是這樣的:

not(onfirstrecord) or 
({TABLE.PAT_ID}=previous({TABLE.PAT_ID}) 
and {TABLE.DEM1}=previous({TABLE.DEM1}) //check all fields you're concerned with for equality 
and {TABLE.DEM2=previous({TABLE.DEM2}) 
and etc...) 
+0

不onlastrecord和next(PATID)= PATID和next(ssdem1)= ssdem1 或 不onlastrecord和next(PATID)= PATID和next(ssdem2)= ssdem2 – Dagz200

+0

@ Dagz200嘗試形成你的公式,因爲我有以上。這裏有一些與你的邏輯有關的問題。首先,當* *,不*兩個* ssdem1或ssdem2在記錄之間相同時,這將抑制。二,沒有理由說你最後的記錄不能重複。 – Ryan

+0

@ Ryan感謝您的幫助。我需要對它進行一些修改,以便也採用「無價值」。 – Dagz200