c # Доступ к вставке новых данных в таблицу с автоматическим номером

#c# #ms-access

#c# #ms-access

Вопрос:

У меня есть таблица с этими столбцами:

 PersonID AutoNumber PrimaryKey
TCKimlikNo Number
PersonName Text
PersonSurname Text
Address Text
Birthdate Text
CategoryID Number
  

Когда я пытаюсь вставить значение из c #, я использую этот запрос:

 INSERT INTO Person(TCKimlikNo, PersonName, PersonSurname, Adress, BirthDate, CategoryID) 
VALUES(@tcKimlikNo, @personName, @personSurname, @adress, @birthDate, @categoryId)
  

Но там написано:

«Microsoft Access присвоил 1 полю значение Null из-за сбоя преобразования типов, и он не добавил 0 записей в таблицу из-за нарушений ключа, 0 записей из-за нарушений блокировки и 0 записей из-за нарушений правил проверки».

Я думаю, что ошибка возникает из-за этого столбца autonumber. Доступ пытается вставить нулевое значение в это, но поле не позволяет этого. В SQL этот запрос работает отлично. Но доступ просто раздражает.

Ответ №1:

Значение NULL связано с проблемой преобразования типов. Скорее всего, вы передаете данные в одно из ваших полей, которые не могут быть преобразованы Access в ожидаемый тип данных. Я бы предположил, что вы передаете значение в CategoryID, которое не преобразуется в правильное число. Это также может быть верно для поля TCKimlinkNo. Я полагаю, что если поле string слишком короткое для передаваемых значений, оно просто усечет их, поэтому я сомневаюсь, что это проблема.

Кроме того, не забудьте проверить размер ваших числовых полей. Вводимое число больше допустимого? Отправляете ли вы десятичные данные, когда ожидается целое число?

Автоматический номер не будет проблемой, если вы не пытаетесь записать в него (чего вы, похоже, не делаете.

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

1. Я снова посмотрел, и проблема заключалась в столбце «TCKimlikNo», я пытаюсь вставить число типа «123456789012», которое было слишком большим для этого столбца. Таким образом, это выдает мне ошибку. Спасибо за ответ.