2010-09-16 3 views
0

меня Вэл MyDate в моей программе C#, которые содержат сегодня-дату или нуль.Ошибка при вставке записи в MS Access

У меня есть поле даты в моем доступе 2007 - TdateOpen

Я пытаюсь вставить в базу данных, как это:

SQL = "insert into MyCount(TdateOpen) values ('" + MyDate +"')"; 

и я получаю эту ошибку:

Data type mismatch in criteria expression 

что может быть проблемой?

+0

Интересно, как вы можете иметь переменную DateTime, значение которого равно нулю в C#. –

+0

вот так я могу ..... публиковать DateTime? MyDate {get; задавать; } – Gold

ответ

1

Coz в вашей инструкции SQL вы вводите дату как String. Вместо String это должен быть формат даты/даты. Попробуйте окружить #.

+0

Существует дополнительная проблема в том, что null не может иметь разделителей. – Fionnuala

0

Вам необходимо убедиться в том, что дата указана в заказе США (мм/дд/гггг) или порядке ANSI/ISO, независимо от того, используете ли вы черту или косую черту, предпочтение отдается ANSI/ISO.

Тогда как, Madhu CM сказал, разделитель для дат в Access hash (#), однако ваша дата может быть нулевой и null не может быть разделена, поэтому вам нужно будет добавить разделитель в строку даты, если дата возвращается или использует два оператора sql, один для null и один для даты.

+0

Требование не является заказом США или заказом ANSI/ISO, но US order или однозначным форматом. Формат ISO - это такой однозначный формат. –

0

Вы можете использовать параметры SQL вместо динамического внедрения значения даты в оператор.

SQL = "insert into MyCount(TdateOpen) values (?)"; 
var parameter = yourCommand.CreateParameter(); 
parameter.Value = yourDateTime; 
yourCommand.Parameters.Add(parameter); 

(ОТКАЗ: Код не был составлен ни проверял, но это должно дать вам подсказку)

Смежные вопросы