2017-02-15 5 views
0

Я пытаюсь фильтровать DataView на основе двух различных столбцов: время_запуска (DateTime) и EndTime (DateTime) ...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 + "'" 

Вместо этого я больше озабочен на то, что вы обрабатываете два поля, которые кажутся Задан как они были строками. Если они действительно DateTime поля, то вам нужен другой синтаксис и квотирование характера

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

(если предположить, что вы hfFrom.Value и hfTo.Value является DateTime переменного)

Вы можете найти более подробную информацию о синтаксисе принято по свойствам RowFilter, глядя на свойство Expression DataColumn

Смежные вопросы