2014-10-10 21 views
0

我有一個報告有2個參數紙箱和位置。水晶報告中的命令級別參數

假設如果我沒有給出任何價值,那麼它應該給所有的價值。

因此創建了2個命令級別參數。它顯示所有值,只要我沒有給參數中的任何值。

但即使如果我給紙箱或位置一些價值,但仍顯示所有值。

請建議是什麼問題

SELECT 
     crt.carton_no, crtd.part_no, SUM(crtd.quantity) AS quantity, 
     crtd.barcode, crtd.item_description 
     , crt.put_away_location AS putAway 
FROM 
     carton crt, carton_details crtd 
WHERE 
     crt.carton_id = crtd.carton_id 
     AND crt.status = 'N' AND 
    (crt.carton_no like '{?cartonno}' or '{?cartonno}' like '%') and (crt.put_away_location LIKE '{?location}' or '{?location}' like '%') 
GROUP BY 
     crt.carton_no, crtd.carton_id, crtd.part_no 
ORDER BY 
     crt.put_away_location, crt.carton_no 
+0

不給予任何價值的手段?你是如何製造的? – Siva 2014-10-10 11:15:50

+0

任何類似'%'的字符串都會返回true,所以WHERE子句的最後一行實際上並沒有做任何事情。 – Ryan 2014-10-10 12:23:41

+0

嗨Siva,如果我留下兩個參數爲空白,那麼它應該顯示基於查詢的所有值。假設如果我給了一些價值,那麼它應該顯示在那裏。這裏發生的事情即使我給紙箱沒有或位置參數值但stiil我得到的所有數據的數據(參數不是根據位置和紙箱沒有過濾) – user3725135 2014-10-10 12:48:28

回答

-1

我猜你的查詢總是把真實忽略or條件...嘗試使用Case

where 
    CASE WHEN {?cartonno} Like "" 
      THEN 
       '{?cartonno}' like '%' 
      ELSE 
       crt.carton_no like '{?cartonno}' 
      END 

Note: I don't know which database you are using above is just an example of SQL... you can change it as required and use similarly for other parameter in where clause

+0

@downvoter ...不分析解決方案不會downvote ... – Siva 2014-10-13 10:25:24