VB.NET错误:"操作数缺失"使用RowFilter命令时

时间:2017-02-15 17:54:38

标签: sql vb.net dataview rowfilter

我正在尝试根据两个不同的列过滤数据视图:StartTime(DateTime)和EndTime(DateTime)......

代码:

 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 + "'"
  

错误:异常详细信息:语法错误:之后缺少操作数   &#39;开始时间&#39;运营商。在System.Data.ExpressionParser.Parse()at   System.Data.DataExpression..ctor(DataTable表,String表达式,   在System.Data.DataView.set_RowFilter(String value)

中键入type)

1 个答案:

答案 0 :(得分: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是DateTime变量)

您可以在查看DataColumn的Expression属性的RowFilter属性接受的语法上找到更多信息