【问题标题】:VB.NET Error: "Operand Missing" when using RowFilter CommandVB.NET 错误:使用 RowFilter 命令时出现“操作数丢失”
【发布时间】:2017-02-15 17:54:38
【问题描述】:

我正在尝试根据两个不同的列过滤数据视图: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 + "'"

错误:异常详细信息:语法错误:缺少操作数 “开始时间”运算符。在 System.Data.ExpressionParser.Parse() 在 System.Data.DataExpression..ctor(DataTable 表,字符串表达式, 在 System.Data.DataView.set_RowFilter(String value) 处键入 type)

【问题讨论】:

  • 删除 WHERE 文本。它隐含在 RowFilter 的概念中
  • @Steve 是的……谢谢!

标签: sql vb.net dataview rowfilter


【解决方案1】:

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 属性接受的语法的更多信息

【讨论】:

    猜你喜欢
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 2017-01-05
    • 1970-01-01
    相关资源
    最近更新 更多