Несоответствие типов данных в выражении критериев
У меня есть одна деталь в VB.NET с Ms Access As Backend... При вставке данных в таблицу не возникает ошибки при запросе и ошибке типа данных, но иногда возникает исключение OleDB Ошибка: "Несоответствие типа данных в выражении критериев". запрос....
Dim cmdstr1 As String = ""
Dim constr As String = ""
Dim sqlQuery As String = ""
constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\PhoneDiary\MyDiary.mdb"
cmdstr = "Insert Into [DetailData]([ShortName],[Title],[FirstName],[MiddleName],[LastName],[Occupation],[DOB],[Gender],[Country],[State],[Address],[ZipCode],[City],[Memo],[CategoryId],[SubCategoryId],[FavouritesID],[PhotoPath],[vCardPath]) VALUES(aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo,pp,qq,rr,ss)"
con = New OleDbConnection(constr)
com = New OleDbCommand(cmdstr, con)
con.Open()
com.Parameters.AddWithValue("aa", xx)
com.Parameters.AddWithValue("bb", cmbTitle.Text)
com.Parameters.AddWithValue.....
com.Parameters.AddWithValue....
.....................
......
com.ExecuteNonQuery()-------"Data type mismatch in criteria expression" Here occurs Error
Так что можете ли вы или кто-нибудь помочь мне решить эту проблему, пожалуйста
2 ответа
Для OP, можете ли вы опубликовать пример значения cmdstr, когда возникает OleDbException? Я подозреваю, что mqbt прав, и, вероятно, ваше поле DOB не в состоянии проанализировать любой формат, заданный вашим DateTime.
Как связанный вопрос, является ли хорошей практикой использование OleDbCommand.Parameters.AddWithValue для изменения параметров в строке SQL таким образом?
Я всегда строил строки SQL в VBA Access, просто конкатенируя строку с параметрами и затем выполняя ее с помощью Docmd.RunSql(), которая, кажется, отстой для длинных строк SQL с десятками параметров. Но это просто увидеть параметры и типы. Я делал это неправильно?
Выразить ошибку несоответствия в деталях, помогает решить, куда она выдает проблему, для какого типа данных. В противном случае вы можете подробно проверить ошибку в окне сообщения об ошибке.