【问题标题】:When i run the program i always get this error. Can somebody help me why im getting this? I am transfering data from table1 to table2 [duplicate]当我运行程序时,我总是得到这个错误。有人可以帮我为什么我得到这个吗?我正在将数据从 table1 传输到 table2 [重复]
【发布时间】:2017-05-11 13:55:06
【问题描述】:

查询表达式 'SeriesNo (between 1and5') 中的语法错误(缺少运算符)

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click        
    If rsa.State = 1 Then rsa.Close()

    rsa.Open("select * from Records where SeriesNo between" & Me.txtseriesfrom.Text & "and" & Me.txtseriesto.Text & "", cn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)

    TextBox5.Text = txtseriesto.Text
    TextBox3.Text = txtseriesfrom.Text
    txtseriesto.Text = txtseriesto.Text + 1



    Do Until Val(txtseriesfrom.Text) >= Val(txtseriesto.Text)

        If rs.State = 1 Then rs.Close()
        rs.Open("select * from Transfer", cn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)
        rs.AddNew()
        rs.Fields("SeriesNo").Value = txtseriesfrom.Text
        rs.Fields("Brand").Value = cbobrand.Text
        rs.Fields("Denomination").Value = cbodenomination.Text
        rs.Fields("Store").Value = cbostore.Text
        rs.Fields("User").Value = txtuser.Text
        rs.Fields("Date").Value = txtdate.Text
        rs.Update()

        txtseriesfrom.Text = txtseriesfrom.Text + 1
    Loop

    txtseriesto.Text = txtseriesto.Text - 1
    txtseriesfrom.Text = Val(TextBox3.Text)
    TextBox4.Text = TextBox3.Text

    TextBox5.Text = TextBox5.Text + 1
    Do Until Val(TextBox4.Text) >= Val(TextBox5.Text)
        rsa.Delete()
        rsa.MoveNext()
        TextBox4.Text = TextBox4.Text + 1
    Loop
    TextBox5.Text = TextBox5.Text - 1
    TextBox4.Text = Val(TextBox3.Text)

    MsgBox("Successfully Transfered!", vbInformation, "SAVED")


End Sub

【问题讨论】:

  • 为“between”参数添加空格:Dim query = $"select * from Records where SeriesNo between {Me.txtseriesfrom.Text} and {Me.txtseriesto.Text}".
  • Series (between 1and5 对您来说看起来像有效的 SQL 语法吗?是你想把它粘在一起吗?
  • 如果您希望我们帮助您,您需要更清楚地公开您想要做什么以及该程序是如何工作的。
  • 使用参数避免sql注入并解决您的错误。

标签: vb.net


【解决方案1】:

我建议您将Me.txtseriesfrom.TextMe.txtseriesto.Text 的值保存在整数变量中,然后在查询中调用它。一个例子:

Dim txt_from as integer = Me.txtseriesfrom.Text

Dim txt_to as integer = Me.txtseriesto.Text

rsa.Open("select * from Records where SeriesNo between " & txt_from & " and " & txt_to & "", cn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)

或者如果你的数据库中SeriesNo的数据类型是Varchar

您缺少用于文本值的 ' '。正确的做法应该是:

rsa.Open("select * from Records where SeriesNo between '" & Me.txtseriesfrom.Text & "' and '" & Me.txtseriesto.Text & "'", cn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)

还将所有txtseriesfrom.Texttxtseriesto.Text 分别替换为txt_fromtxt_to 变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-08
    • 2022-08-15
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多