2012-06-13 47 views
1

我有三個參數(@person_id,@Person_name,@Supervisor_name),都有允許多個值允許啓用空白值財產。與多值參數空白參數沒有返回

報告的列是使用具有相同列的數據集表創建的Person_id,Person_name,Supervisor_name,Claims_done,average_claims_perday。

其返回數據的數據集具有過濾查詢:

where @person_id in (@person_id) 
or [PersonName] in (@Person_name) 
or Supervisor_name in (@supervisor_name) 

的要求是了三個參數,如果任何參數爲空,則查詢應給出了基於那些參數結果用多值選擇。

例如:數據集創建以下結果。

11,ABC,約翰,12,3
22,DEF,約翰,345,9
33,GHI,布萊恩,89%,7
44,JKL,布萊恩,45,6
55, MNO,布萊恩,60,7

如果我選擇parmeter @Person_name = 'MNO' 和@Supervisor_name = '約翰',並保持@person_id空,則也應該給結果:

11,ABC,約翰,12,3
22,def,john,345,9
55,MNO,布萊恩,60%,7

如果我選擇@person_id = 11,44和@Supervisorname = '約翰',離開了@Person_name空白,那麼它應該得到的結果:

11 ,ABC,約翰,12,3
22,DEF,約翰,345,9
44,JKL,布萊恩,45,6

當我保留任何參數的空白,報表犯規顯示任何東西,如果我爲所有參數選擇了至少一個值,它給出了完美的結果。

任何幫助表示讚賞。

回答

1

如果我理解正確,您的參數處理要求可以改爲:如果設置了參數,則對其進行過濾;否則不要過濾它。

如果這是正確的,在where子句改變這樣的事情:

WHERE (Person_id in (@person_id) OR @person_id = '') 
AND (PersonName in (@Person_name) OR @Person_name = '') 
AND (Supervisor_name in (@supervisor_name) OR @supervisor_name = '') 

這意味着每個參數必須要麼滿意,必須是空白。