Я так сильно боролся с чем-то, что в конце концов нашел, как исправить, но я не знаю первопричины. Если я добавляю DateTimePicker
(в данном случае dtRecordBatchDate
) в форму, а пользователь не меняет дату и время по умолчанию, и я передаю его DateTimePicker.Value
команде SQL, используя свойство Parameters
, я получаю эту ошибку:
using (OleDbCommand command = new OleDbCommand("INSERT INTO Herbs_Stock (herb_id,batch_number,batch_date,quantity,cost,shipcost) VALUES (?,?,?,?,?,?)", Program.myconnection))
{
command.Parameters.AddWithValue("@herb_id", herb_id);
command.Parameters.AddWithValue("@batchnumber", batch_number);
command.Parameters.AddWithValue("@batch_date", dtRecordBatchDate.Value); // HERE'S THE IMPORTANT PART
command.Parameters.AddWithValue("@quantity", quantity);
command.Parameters.AddWithValue("@cost", cost);
command.Parameters.AddWithValue("@shipcost", shipcost);
command.ExecuteNonQuery();
}
Несоответствие типов данных в выражении критериев
Но если я добавлю только одну строку перед переходом к команде, она будет исправлена: dtRecordBatchDate.Value=DateTime.Today
.
Почему так? Это странно, потому что тип DateTimePicker.Value
- это DateTime
, а не DateTime?
, и для него уже установлено значение по умолчанию DateTime.Now
(или за несколько секунд до этого :)). Мне это очень любопытно.
batch_date
столбца? Какое значениеdtRecordBatchDate.Value.Date
, когда вы смотрите в отладчике? Почему бы вам не использовать вместо этого простоdtRecordBatchDate.Value
? - person Soner Gönül   schedule 28.11.2013DateTime
, а такжеdtRecordBatchDate.Value
иdtRecordBatchDate.Value.Date
. Думаю, проблема сложнее и, возможно, это ошибка. - person Ehsan88   schedule 28.11.2013