Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Что я не так делаю ?  (Прочитано 13388 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 04-05-2005 13:50 » 

Код:
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = this.conn;
string strCmd = "UPDATE table SET Birthday = '1999.02.15' WHERE ID = '" + currIdNum + "'";
cmd.CommandText = strCmd;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();

Получаю эксепшн :
Цитата
Data type mismatch in criteria expression.

В голову мне приходит что тип поля Birthday в базе(Access 2003)  Date/Time , а подаю я в запросе как стринг.
Как правильно сделать, чтобы без эксепшина было ?
« Последнее редактирование: 15-12-2007 17:01 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #1 : 04-05-2005 13:58 » 

Вот вывел сам эксепшн
Цитата
System.Data.OleDb.OleDbException: Data type mismatch in criteria expression.
   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Alf
Гость
« Ответ #2 : 04-05-2005 14:12 » 

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

Для контроля неплохо бы выполнить строку SQL-запроса непосредственно в среде Access. Если там сработает, думаю, у нее будут неплохие шансы сработать и через ADO.NET.
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #3 : 04-05-2005 18:32 » new

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

Тип поля Date/Time .
Приду на работу завтра, проверю этот запрос из самого акскса
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Alf
Гость
« Ответ #4 : 04-05-2005 19:49 » 

Тип поля Date/Time.

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

Порылся сейчас в справочной системе Access. Там есть намеки на то, что дата должна быть представлена в формате, соответствующем формату краткого представления даты в системе. Погляди в панели управления в "Региональных стандартах", в каком порядке у тебя заданы день, число, месяц и какие между ними разделители.

Еще есть подозрение, что вместо апострофов следует употреблять знаки "#".
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #5 : 05-05-2005 07:19 » 

Всё, выяснил Улыбаюсь
Всё дело в том, что в запросе
Код:
string strCmd = "UPDATE table SET Birthday = '1999.02.15' WHERE ID = '" + currIdNum + "'";
WHERE ID = идёт цифра в одинарных кавычках Улыбаюсь Убрал эти кавычки и всё заработало Улыбаюсь
« Последнее редактирование: 15-12-2007 17:02 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Alf
Гость
« Ответ #6 : 05-05-2005 07:36 » 

Это хорошо, что заработало.

Но все-таки на представление даты обрати внимание. В справке написано, что Access сам разбирается в случаях вроде твоего: '1999.02.15', где не перепутаешь год, число и месяц. Однако если попадется случай вроде '01.02.03', тут возможны варианты. Поэтому лучше уж сразу принять меры, чтобы потом не ловить ошибки.
« Последнее редактирование: 15-12-2007 17:03 от Алексей1153++ » Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #7 : 05-05-2005 08:17 » 

Однако если попадется случай вроде '01.02.03', тут возможны варианты. Поэтому лучше уж сразу принять меры, чтобы потом не ловить ошибки.
Такие случаи предусмотрены у меня в самом коде Улыбаюсь До запроса просто не дойдёт дело, пока не будет правильно сформирована дата.
« Последнее редактирование: 15-12-2007 17:03 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines