Russian Qt Forum
Ноябрь 24, 2024, 00:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с вставкой из клиента в поле datetime таблицы MS SQL server  (Прочитано 5407 раз)
Андрей80
Гость
« : Март 22, 2009, 15:28 »

Здравствуйте.
Столкнулся с такой проблемой:
Есть БД MS SQL SERVER 2000 , в ней таблица с полем типа datetime.
Выдержка из кода:
Код:
QSqlQuery locquery;
QString sql = "INSERT INTO party_delivered VALUES(\'"  + currentDate() + "\', 1, 0)";
if (!locquery.exec(sql))
{
QString error = locquery.lastError().text();
lib.qMessageBox("Error!", lib.rus("Ошибка добавления партии в таблицу") + "\n" + error + "\nSQL = " +          sql,"error");
}

после компиляции получаю ошибку
---------------------------
Error!
---------------------------
Ошибка добавления партии в таблицу
  [Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated. QODBC3: Unable to execute statement
SQL = INSERT INTO party_delivered VALUES('2009.03.21', 1, 0)
---------------------------
OK   
---------------------------

причём если вставить запрос INSERT INTO party_delivered VALUES('2009.03.21', 1, 0)
в MS SQL Query analizer и выполнить то работает на ура.

также при использовании вместо СУБД MS SQL SERVER 200 MySQL или SQLite клиент работает.
Понимаю что вопрос не по QT а по MS, но всё же может кто то в курсе...
 
Код
C++ (Qt)
 
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #1 : Март 23, 2009, 02:21 »

вероятно то что функция currentDate() возвращает - БД не хочет понимать как Дата/Время...

может так попробовать:

Код:
QSqlQuery locquery;
QString sql = "INSERT INTO party_delivered VALUES(?, 1, 0)";
locquery.prepare( sql );
locquery.bindValue( 0, QDateTime::currentDateTime() ); // здесь вроде Qt драйвер Базы Данных должен сам правильно сконвертить
if (!locquery.exec(sql))
....
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.13 секунд. Запросов: 22.