#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:
Скорее всего, это как-то связано с датами. Без обид, но этот код очень непрофессиональный, когда дело доходит до обновления таблицы базы данных.
Вы должны обеспечить лучшее кондиционирование для дат; поскольку вы упоминаете разницу с другим компьютером, обычно это связано с тем, что форматы даты / времени различаются между двумя компьютерами. Очевидно, что чаще встречается в разных странах, но для уверенности проверьте форматы даты и времени между двумя компьютерами в панели управления.
Кто-то с доступом к ПК, вероятно, может дать лучший ответ!