我正在尝试根据两个不同的列过滤数据视图: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)
答案 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属性接受的语法上找到更多信息