2017-07-14 69 views
0

我想轉換我的SQL查詢與情況下rowfilter條件但它不工作。無法在數據視圖中轉換SQL查詢Rowfilter

這是我的SQL查詢:

select * 
from myview 
where myview.CHARGE_CODE = (CASE 
           WHEN 'ALL' = 'ALL' THEN CHARGE_CODE 
           ELSE '1023' 
          END) 

,這是的RowFilter查詢:

dt.DefaultView.RowFilter = "CHARGE_CODE=(CASE '"+ddlCharge_Code.SelectedValue +"' when 'ALL' THEN CHARGE_CODE ELSE '"+ ddlCharge_Code.SelectedValue+"' END)"; 

如何將我的SQL查詢在C#中?

回答

0

您沒有以相同的方式轉換它。在MySQL查詢中,有一個檢查'ALL'='ALL',這將保持爲真。所以下面的語句會產生相同的結果作爲原始查詢:

select * from myview where myview.CHARGE_CODE = CHARGE_CODE 

如果您翻譯的到的RowFilter你定義你:

dt.DefaultView.RowFilter = "CHARGE_CODE=CHARGE_CODE"; 

我想,你missplaced條件檢查反對。我想這應該是:

dt.DefaultView.RowFilter = "CHARGE_CODE='"+ddlCharge_Code.SelectedValue + "'"; 
+0

在我的SQL查詢中的所有代表中的所有記錄表,所以你的查詢不會在這裏工作。 – abhishek

+0

我有多組選擇標準,用戶可以選擇所有charge_code或單個,這樣我的sql查詢工作正常,當用戶選擇所有它會給所有charge_code,或者如果用戶選擇單charge_code它會給予根據。 – abhishek

1

這將是更好地檢查可選參數,並將它們添加到查詢,但這次將工作

var paramValue = ddlCharge_Code.SelectedValue; 
string filter = string.Format("('{0}' = 'ALL') OR ('{0}' <> 'ALL' AND CHARGE_CODE = '{0}')", paramValue); 
dt.DefaultView.RowFilter = filter;