2017-02-15 80 views
0

我試圖篩選基於兩個不同的列數據視圖時:開始時間(日期時間)和結束時間(日期時間)...VB.NET錯誤:「缺少操作數」使用的RowFilter命令

代碼:

Dim dvLosses As New DataView(dsLossData.Tables("AllData").DefaultView.ToTable(True, New String(){"ID", "Name", "StartTime", "EndTime", "Loss"}), "", "StartTime desc", DataViewRowState.CurrentRows) 

dvLosses.RowFilter = "Where StartTime > '" + hfFrom.Value + "' and EndTime < '" + hfTo.Value + "'" 

Error: Exception details: Syntax error: Missing operand after 'StartTime' operator. at System.Data.ExpressionParser.Parse() at System.Data.DataExpression..ctor(DataTable table, String expression, Type type) at System.Data.DataView.set_RowFilter(String value)

+1

刪除WHERE文本。這是隱含在RowFilter的概念 – Steve

+0

@Steve yup就是這樣......謝謝! – Dplusa25

回答

0

RowFilter屬性是或多或少像WHERE表達式的表達式,但它不需要單詞WHERE。只需鍵入條件表達式

dvLosses.RowFilter = "StartTime > '" + hfFrom.Value + 
         "' and EndTime < '" + hfTo.Value + "'" 

相反,我更關注的事實是,你如何對待,似乎是一個日期時間,因爲他們是字符串兩個字段。如果他們真的日期時間字段,那麼你需要一個不同的語法和引用字符

dvLosses.RowFilter = "StartTime > #" + hfFrom.Value.ToString("M/d/yyyy") + 
         "# and EndTime < #" + hfTo.Value.ToString("M/d/yyyy") + "#" 

(假設你hfFrom.Value和hfTo.Value有日期時間變量)

你可以找到關於語法的詳細信息接受通過RowFilter屬性查看DataColumn的Expression屬性