【问题标题】:Input the date of DateTimePicker in ms access using a query VB.NET使用查询 VB.NET 以毫秒访问输入 DateTimePicker 的日期
【发布时间】:2016-07-28 15:49:27
【问题描述】:

System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常

附加信息:查询表达式“7/27/2016 6:20:48 PM”中的语法错误(缺少运算符)。

每次单击程序上的保存按钮时都会收到此消息。

代码如下:

Public Sub savetoDB()
    Dim mydate As DateTime
    mydate = Me.dtpDateDel.Value

    con.Open()
    Dim sqlQry As String = "INSERT INTO [tbl_Monitoring] ([Truck Plate No], [Driver], [Helper], [Date of Delivery], [Product], [Payment], [Customer]) VALUES (@p1, @p2, @p3, " & mydate & ", @p5, @p6, @p7)"
    Using cmd As New OleDbCommand(sqlQry, con)
        cmd.Parameters.AddWithValue("@p1", cbxTruck.Text)
        cmd.Parameters.AddWithValue("@p2", cbxDriver.Text)
        cmd.Parameters.AddWithValue("@p3", cbxHelper.Text)
        cmd.Parameters.AddWithValue("@p5", cbxProduct.Text)
        cmd.Parameters.AddWithValue("@p6", txtPayment.Text)
        cmd.Parameters.AddWithValue("@p7", txtCustomer.Text)
        cmd.ExecuteNonQuery()
        con.Close()
        MsgBox("Save Successfully!")
    End Using

End Sub

错误被抛出到 cmd.ExecuteNonQuery()

【问题讨论】:

  • 不要将“mydate”作为纯文本传递。像使用其他值一样使用参数。
  • 我查看了您的个人资料,您似乎没有在发布的任何问题中将任何答案标记为正确。应该这样做,以便将它们从“未回答的问题”列表中删除并为每个人节省一些时间:)
  • 对不起先生,我是stackoverflow的新手。

标签: vb.net ms-access


【解决方案1】:

那么当你这样做时会发生什么?

Public Sub savetoDB()
Dim mydate As DateTime
    mydate = Me.dtpDateDel.Value

    con.Open()
    Dim sqlQry As String = "INSERT INTO [tbl_Monitoring] ([Truck Plate No], [Driver], [Helper], [Date of Delivery], [Product], [Payment], [Customer]) VALUES (@p1, @p2, @p3, @p4, @p5, @p6, @p7)"
    Using cmd As New OleDbCommand(sqlQry, con)
        cmd.Parameters.AddWithValue("@p1", cbxTruck.Text)
        cmd.Parameters.AddWithValue("@p2", cbxDriver.Text)
        cmd.Parameters.AddWithValue("@p3", cbxHelper.Text)
        cmd.Parameters.AddWithValue("@p4", mydate)
        // Alternatively you need to use something like this to format it correctly.
        //cmd.Parameters.AddWithValue("@p4", mydate.ToString("dd/mm/yyyy hh:mm"))
        cmd.Parameters.AddWithValue("@p5", cbxProduct.Text)
        cmd.Parameters.AddWithValue("@p6", txtPayment.Text)
        cmd.Parameters.AddWithValue("@p7", txtCustomer.Text)
        cmd.ExecuteNonQuery()
        con.Close()
        MsgBox("Save Successfully!")
    End Using
End Sub

【讨论】:

  • 它说附加信息:标准表达式中的数据类型不匹配。并且错误仍然抛出到 cmd.ExecuteNonQuery()
  • @Kenzakie20 然后看看这个。 stackoverflow.com/questions/28091765/…
  • @Kenzakie20 我还编辑了答案以包含此内容。
【解决方案2】:

你可以试试这个代码:

Public Sub savetoDB()
Dim mydate As DateTime
mydate = Me.dtpDateDel.Value

con.Open()
Dim sqlQry As String = "INSERT INTO [tbl_Monitoring] ([Truck Plate No], [Driver], [Helper], [Date of Delivery], [Product], [Payment], [Customer]) VALUES (@p1, @p2, @p3, @p4, @p5, @p6, @p7)"
Using cmd As New OleDbCommand(sqlQry, con)
    cmd.Parameters.AddWithValue("@p1", cbxTruck.Text)
    cmd.Parameters.AddWithValue("@p2", cbxDriver.Text)
    cmd.Parameters.AddWithValue("@p3", cbxHelper.Text)
    cmd.Parameters.Add("@p4", SqlDbType.Date ,mydate) 
    cmd.Parameters.AddWithValue("@p5", cbxProduct.Text)
    cmd.Parameters.AddWithValue("@p6", txtPayment.Text)
    cmd.Parameters.AddWithValue("@p7", txtCustomer.Text)
    cmd.ExecuteNonQuery()
    con.Close()
    MsgBox("Save Successfully!")
End Using
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2019-11-12
    • 1970-01-01
    相关资源
    最近更新 更多