【问题标题】:SQL query in VB - Missing operandVB 中的 SQL 查询 - 缺少操作数
【发布时间】:2012-09-29 02:08:23
【问题描述】:

刚学了一点VB,想搜索一个很简单的SQL查询如下:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    firstOrd = txtFirstOrd.Text
    Me.OrdersBindingSource.Filter = "select * from orders WHERE firstDate =" & firstOrd
End Sub

我刚刚在一个简单的按钮上执行了这个并继续得到这个:

Syntax error: Missing operand after 'orders' operator.

我很确定这是一个引用问题,但无法解决!任何帮助都会很棒!

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    您似乎正在尝试使用 bindingSource 的过滤器。这个filter property 可能包含一个条件来检查给定 bindingSource 的每一行

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        firstOrd = txtFirstOrd.Text
        Me.OrdersBindingSource.Filter = String.Format("firstDate = '{0}'", firstOrd)
    End Sub
    

    我假设firstOrd 将包含一个dateTime 值,因此可以考虑查看BindingSource.Filter by Date

    【讨论】:

    • 嗨 Pilgerstorfer,是的,'firstOrd' 是数据库中的 dataTime 值。你能向我解释一下“{0}”吗?感谢您的帮助!
    • 而不是使用 String.Format 连接我喜欢的每个字符串。这会将{0} 替换为 , 之后的第一个值(此处为:firstOrder
    • Pilgerstorfer 也试过了。我无法找到我的方法来找到过滤的“.Filter By date”功能。当我在上面运行您的代码时,我得到以下信息:无法对 System.DateTime 和 System.String 执行“=”操作。感谢您的帮助!
    • 你查看BindingSource.Filter by Date的链接了吗
    • 嗨 Pilgerstorfer,感谢您的帮助,我现在已经对其进行了排序。最后使用了 DataTimePicker 并且只使用了一行代码。事实证明,绑定源类似于 WHERE 子句等,只需要查询的最后。再次感谢您的帮助!
    【解决方案2】:

    听起来您正在使用 SQL 解释器,它将orders 视为 SQL 中的关键字。为了清楚地表明它是一个表名,请引用它。

    "select * from [orders] WHERE firstDate =" & firstOrd
    

    但是,通常建议(但并不总是实用)只是为了避免作为关键字的表名。

    【讨论】:

    • 您好 Konrad,之前也尝试过,但得到了这个语法错误:“[orders]”运算符后缺少操作数。
    猜你喜欢
    • 2017-03-29
    • 2019-09-22
    • 2012-02-25
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2023-01-17
    相关资源
    最近更新 更多