2016-07-27 2 views
0

Необработанное исключение типа «System.Data.OleDb.OleDbException» произошло в System.Data.dllввода даты DateTimePicker в доступе мс с помощью запроса VB.NET

Дополнительная информация: Ошибка синтаксиса (отсутствует оператора) в выражении запроса '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()

+3

Не передавайте 'MyDate' как обычный текст. Используйте параметр, как вы сделали, с другими значениями. –

+0

Я посмотрел ваш профиль, и кажется, что вы не отметили ни одного ответа, как правильного в любом из ваших вопросов. Это нужно сделать так, чтобы они удалялись из списка «без ответа» и сохраняли все время :) – Danieboy

+0

Мне очень жаль, сэр. Я новичок в stackoverflow. – NiewBiee2020

ответ

3

Так что же происходит, когда вы это делаете?

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 
+0

Он говорит Дополнительная информация: несоответствие типа данных в выражении критериев. и ошибка все еще бросается в cmd.ExecuteNonQuery() – NiewBiee2020

+0

@ Kenzakie20 Тогда проверьте это. http://stackoverflow.com/questions/28091765/additional-information-data-type-mismatch-in-criteria-expression-saving-to-data – Danieboy

+0

@ Kenzakie20 Я также отредактировал ответ, чтобы включить это. – Danieboy

0

Вы можете попробовать этот код:

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