Вставка значения даты / времени в Access с помощью OleDbParameter - PullRequest
5 голосов
/ 23 сентября 2011

Я пытаюсь сделать вставку в oledb (база данных MS Access) поле с именем objectdate является дата / время

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

  OleDbParameter objectdate = new OleDbParameter("@objectdate", OleDbType.DBDate);
  objectdate.Value = DateTime.Now; cmd.Parameters.Add(objectdate);

ошибка:

Несоответствие типов данных в выражении критериев.

Ответы [ 3 ]

10 голосов
/ 15 мая 2012

OleDB не любит миллисекунды в параметрах даты и времени.Если вы удалите миллисекунды, все будет хорошо.Смотрите также: Как обрезать миллисекунды .NET DateTime .

0 голосов
/ 24 сентября 2013

Предложение:

OleDbParameter objectdate = new OleDbParameter("@objectdate", DbType.DateTime);

не принимается в Visual Basic 2008, я использую так:

ordeen.Parameters.Add(New OleDb.OleDbParameter("objectdate", DbType.DateTime))
ordeen.Parameters("objectdate").Value=object.text   'but its not run

следующее предложение работает только в sqlserver:

cmd.Parameters.AddWithValue("@objectdate", DateTime.Now.ToString());

проблема в Access еще не устранена

0 голосов
/ 23 сентября 2011

Вы можете использовать.

   OleDbParameter objectdate = new OleDbParameter("@objectdate", DbType.DateTime);
   objectdate.Value = DateTime.Now; cmd.Parameters.Add(objectdate);

или используйте версию даты Ole Automation.

OleDbParameter objectdate = new OleDbParameter("@objectdate", DbType.DateTime);
       objectdate.Value = DateTime.Now.ToOADate(); cmd.Parameters.Add(objectdate);

Или вы можете ввести datetime в виде литерала, поскольку Datetime.ToString () удаляет миллисекунды, с которыми доступ не может работать.

cmd.Parameters.AddWithValue("@objectdate", DateTime.Now.ToString());

это должно работать.

...