Проблема с вставкой даты в базу данных Ms-Access - PullRequest
0 голосов
/ 23 июня 2011

В моей таблице базы данных Ms-Access есть поле даты в формате короткой даты.

В моей программе на C # DateTimePicker элемент управления в dd/MM/yyyy short формате даты

Я пытаюсь вставить данные, используя код C #, например:

SQL = "insert into MyTbl(D_from,D_to) values (@MyFrom,@MyTo)";
OleDbCommand Cmd = Conn.CreateCommand();
OleDbParameter dateparam1 = Cmd.Parameters.AddWithValue("@MyFrom", DbType.DateTime);
dateparam1.Value = dt_From.Value; 

OleDbParameter dateparam2 = Cmd.Parameters.AddWithValue("@MyTo", DbType.DateTime);
dateparam2.Value = dt_To.Value;

Cmd.CommandText = SQL;
Cmd.ExecuteNonQuery();

, и я получил ошибку: Data type mismatch in criteria expression.

Ответы [ 3 ]

2 голосов
/ 23 июня 2011

измените Parameters.AddWithValue на Parameters.Add

Cmd.Parameters.Add("@MyFrom", DbType.DateTime);

, если вы используете Parameters.AddWithValue, тогда вам нужно передать Value как Second Parameter, а не DataType

Cmd.Parameters.AddWithValue("@MyFrom", dt_From.Value);

а также вам нужно установить CommandType как Text

0 голосов
/ 23 июня 2011

Попробуйте это

dateparam1.Value = dt_From.Value.ToShortDateString();
dateparam2.Value = dt_To.Value.ToShortDateString();

В противном случае посмотрите на это:

Значения даты должны быть либо разделены в соответствии с каноническим форматом даты ODBC, либо разделены ограничителем даты и времени ("#"),В противном случае Microsoft Access будет обрабатывать значение как арифметическое выражение и не будет выдавать предупреждение или ошибку.

Например, дата «5 марта 1996 года» должна быть представлена ​​как {d '1996-03-05'} или № 03/05/1996 #;в противном случае, если отправлено только 03.05.1993, Microsoft Access оценит это как 3, деленное на 5, деленное на 1996. Это значение округляется до целого числа 0, и, поскольку нулевой день соответствует 1899-12-31, этоиспользуемая дата.

Символ трубы (|) нельзя использовать в значении даты, даже если он заключен в кавычки.

0 голосов
/ 23 июня 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...