2013-12-17 87 views
0

我正在使用Crystal報表生成使用特定日期參數的報表,可以使用@p_start_date@p_end_date之間的範圍或@t_start_date@t_end_date。存儲過程中的IF語句通過用戶在報告運行時指定的布爾參數(@use_p_date)確定要使用哪個日期。根據Crystal Reports中的選擇禁用參數

我想要做的是,如果@use_p_date是1,那麼對於選擇禁用其他日期字段(@t_start_date@t_end_date),因爲它們不會被使用,副維拉如果@use_p_date設置爲false。

可以這樣做嗎?如果是的話,我該怎麼做?

回答

1

當然這可以做到。我敢肯定,有不同的方式去了解它,但一個非常簡單的一個是:

BEGIN 
IF (@use_p_date) =1 
    SELECT * FROM DataBase 
    WHERE OrderDate >[email protected]_start_date and OrderDate =< @p_end_date 
ELSE 
    SELECT * FROM DataBase 
    WHERE OrderDate >[email protected]_start_date and OrderDate =< @t_end_date 

END 

數據庫顯然是你的數據庫,訂購日期爲你的約會參數看數據字段。

編輯:

要做到這一點在CR本身,你可以做兩件事。您可以使用您的記錄選擇像這樣使用simmilar方法和上面:

If ({?use_p_date} =1 
Then OrderDate >={?p_start_date} and OrderDate =< {?p_end_date} 
Else OrderDate >={?t_start_date} and OrderDate =< {?t_end_date} 

或者你可以讓你的參數可選,然後做這樣的事情在拍攝選擇:

if hasvalue({?p_start_date}) and hasValue({?p_end_date}) then ..... 
else ....... 
+0

我在實際水晶報表界面中更多查找禁用的參數不在Sql本身,這已經到位 –

+0

請看修改後的答案。語法可能不是100%正確的,但我希望你明白。 –

+0

謝謝,這應該是訣竅 –