Ошибка несоответствия типов данных при обновлении базы данных Access из VB.NET

#vb.net #ms-access-2007 #type-mismatch #oledbexception

#vb.net #ms-access-2007 #несоответствие типа #исключение oledbexception

Вопрос:

 cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersSteveDocumentsVisual Studio 2010ProjectsChurch Of GloryChurch Of GloryRegistry.accdb"
cmd.CommandText = "update Registry set relaship = '"   ComboBox3.Text   "',fathnam = '"   fathnam.Text   "',dob = '" amp; DateTimePicker1.Value amp; "',age = '"   age.Text   "',addr = '"   addr.Text   "',area = '"   areas.Text   "',city = '"   city.Text   "',zipc = '"   pinc.Text   "',conta = '"   cnct.Text   "',email = '"   email.Text   "',occup = '"   occu.Text   "',bap_stat = '"   bap_stat   "',bap_dat = '" amp; DateTimePicker2.Value amp; "',mar_stat = '"   mar_stat   "',mar_dat = '" amp; DateTimePicker3.Value amp; "',gen = 'Male' where fnam = '"   ComboBox2.Text   "' and lnam = '"   ComboBox1.Text   "'"
cmd.Connection = cn
cn.Open()
cmd.ExecuteNonQuery()
MsgBox("Update Successful")
cn.Close()
  

Этот код отлично работает в моей системе .. но он говорит

исключение oledb было необработанным «несоответствие типа данных»

когда я скопировал код и выполнил его на компьютере моего брата.. я тщательно изменил путь к источнику данных… я всего лишь новичок.. все типы полей являются текстовыми, за исключением дат.. у меня есть еще одно поле, которое является автономером, и я не хочу, чтобы это было в моем запросе на обновление.. поэтому я оставил это..

Комментарии:

1. Объединение строк для формирования команд sql — очень опасная практика. Ваш код не только подвергается sql-инъекциям, но и возникает множество проблем, когда одна или несколько ваших «строк» содержат недопустимые символы. Я предлагаю привести здесь пример одного cmd. Командный текст, который завершается с ошибкой. Тем временем выполните поиск параметризованных запросов

2. предварительный просмотр command.text в msgbox и сравнение результатов

Ответ №1:

Скорее всего, это как-то связано с датами. Без обид, но этот код очень непрофессиональный, когда дело доходит до обновления таблицы базы данных.

Вы должны обеспечить лучшее кондиционирование для дат; поскольку вы упоминаете разницу с другим компьютером, обычно это связано с тем, что форматы даты / времени различаются между двумя компьютерами. Очевидно, что чаще встречается в разных странах, но для уверенности проверьте форматы даты и времени между двумя компьютерами в панели управления.

Кто-то с доступом к ПК, вероятно, может дать лучший ответ!