Модераторы: gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> добавление даты в бд Access 
V
    Опции темы
Экскалупатор
Дата 13.10.2010, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 3
Всего: 24



всем привет. есть таблица в бд Access. там есть поле типа "короткий формат даты", должно принимать такие записи "10.10.2010". при попытке добавить туда дату выпадает исключение "Несоответствие типов данных в выражении условия отбора."
пытался так:
Код

OleDbParameter dataDoc = cmd.Parameters.Add("@DateArrive", OleDbType.DBDate);
            dataDoc.Value = DateTime.Now.ToShortDateString();

и так:
Код

OleDbParameter dataDoc = cmd.Parameters.Add("@DateArrive", OleDbType.DBDate);
            dataDoc.Value = DateTime.Now.Date;

даже так:
Код

OleDbParameter dataDoc = cmd.Parameters.Add("@DateArrive", "10.10.2010");

при чем при отладке видно что в параметр записывается строка вида "10.10.2010". но в кавычках, я так понимаю что проблема в том что он воспринимает ее именно как строку, и по этому не пропускает. как быть?
PM MAIL ICQ   Вверх
mrbrooks
Дата 13.10.2010, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 5
Всего: 306



в свое время в дебилдере сталкивался с аналогичной проблемой в Access. У него метка времени была на американский манер. Грубо говоря (именно с решетками):
Цитата

#месяц/день/год#

PM MAIL   Вверх
mrbrooks
Дата 13.10.2010, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 5
Всего: 306



хотя по логике вещей все преобразования должны делаться под ковром. сделай так:
Код

var dataDoc = cmd.Parameters.Add("@DateArrive", OleDbType.Date);
dataDoc.Value = DateTime.Now.Date;

PM MAIL   Вверх
Экскалупатор
Дата 13.10.2010, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 3
Всего: 24



все равно ошибка, но уже "переполнение".
PM MAIL ICQ   Вверх
mrbrooks
Дата 13.10.2010, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 5
Всего: 306



у меня ms access 2003 - тот пример что тебе написал - работает на ура.


PM MAIL   Вверх
Экскалупатор
Дата 13.10.2010, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 3
Всего: 24



а какой у тебя тип поля в базе?
PM MAIL ICQ   Вверх
mrbrooks
Дата 13.10.2010, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 5
Всего: 306



дата/время - краткий формат даты. все условия как у тебя.
PM MAIL   Вверх
Экскалупатор
Дата 13.10.2010, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 3
Всего: 24



только что все перепроверил. дата/время, краткий фотрмат даты. результат = "переполнение"

Добавлено через 3 минуты
запрос:
Код

INSERT INTO DBArriveDevice
                                                    (DateArrive, SerialNumber, SF, Node)
                            VALUES 
                                (@DateArrive, @SerialNumber, @SF, @NODE)

передача параметра:
Код

            OleDbParameter dataDoc = cmd.Parameters.Add("@DateArrive", OleDbType.Date);            
            dataDoc.Value = DateTime.Now.Date;


если из запроса убрать дату то все ок. но с датой выпадает исключение "переполнение"
PM MAIL ICQ   Вверх
mrbrooks
Дата 13.10.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 5
Всего: 306



хм. подключи (если уже не подключил) БД к обозревателю серверов и сгенерируй запрос на вставку - посмотри - чисто SQL - запросом все проходит?

Цитата(Экскалупатор @  13.10.2010,  12:12 Найти цитируемый пост)
но с датой выпадает исключение "переполнение" 

OverflowException?
PM MAIL   Вверх
Экскалупатор
Дата 13.10.2010, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 3
Всего: 24



System.Data.OleDb.OleDbException was caught
  Message="Переполнение"
  Source="Microsoft JET Database Engine"
  ErrorCode=-2147217833

PM MAIL ICQ   Вверх
mrbrooks
Дата 13.10.2010, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 5
Всего: 306



попробуй так:
Код

            OleDbParameter dataDoc = cmd.Parameters.Add("@DateArrive", OleDbType.Char);            
            dataDoc.Value = DateTime.Now.Date;

PM MAIL   Вверх
Экскалупатор
Дата 13.10.2010, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 3
Всего: 24



System.Data.OleDb.OleDbException: Несоответствие типов данных в выражении условия отбора
PM MAIL ICQ   Вверх
mrbrooks
Дата 14.10.2010, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 5
Всего: 306



у меня на 2003 все работает. 
а ты одну запись вставляешь?
PM MAIL   Вверх
Экскалупатор
Дата 14.10.2010, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 3
Всего: 24



да
PM MAIL ICQ   Вверх
mrbrooks
Дата 14.10.2010, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 5
Всего: 306



да. тут только танцы с бубном. 
а так?
Код

            OleDbParameter dataDoc = cmd.Parameters.Add("@DateArrive", OleDbType.Date);            
            dataDoc.Value = new DateTime(2010,10,14);

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0977 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.