crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Проблема с подстановкой в запрос SELECT даты (MS SQL).
silver47
  опции профиля:
сообщение 12.4.2010, 5:24
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Доброго времени суток, с толкнулся со следующей проблемой, при выполнении запроса, необходимо учитывать границы дат, в последствии нужно будет добавлять записи с нужной датой, думаю там будет то же самое :(.


QSqlQuery searchQuery;
QString q("SELECT dbo.violations.SSNO, dbo.DEPT.NAME, ... FROM dbo.violations INNER JOIN dbo.DEPT ON (dbo.violations.DEPT_ID = dbo.DEPT.ID) WHERE ");

q += "(dbo.violations.DOCDATE >= :start) and (dbo.violations.DOCDATE <= :stop)";
searchQuery.bindValue(":start", startDate->date());
searchQuery.bindValue(":stop", stopDate->date());


при выполнении запроса: QODBCResult::exec: unable to bind variable: " [Microsoft][ODBC SQL Server Driver]Дополнительная возможность не реализована"

:(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
molchanoviv
  опции профиля:
сообщение 12.4.2010, 8:43
Сообщение #2


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Цитата(silver47 @ 12.4.2010, 9:26) *
У меня не оракл, а Microsoft SQL Server 2005.


Зато драйвер QODBC.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 12.4.2010, 10:55
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


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


попробовал, запрос верный.

Позиционнная подстановка:

QString q("SELECT ..... всякое безобразие ");

q += "(dbo.violations.DOCDATE >= '?') and (dbo.violations.DOCDATE <= '?')";
q += " ORDER BY dbo.violations.DOCDATE DESC";
searchQuery.prepare(q);
searchQuery.bindValue(startDate->date());
searchQuery.bindValue(stopDate->date());


Ошибка при компиляции widget.cpp:343: error: no matching function for call to 'QSqlQuery::bindValue(QDate)'

Зачем создаю промежуточную строку с текстом запроса? Запрос динамический, начало у него одинаковое, а вот WHERE меняются там на условиях.

Ну чтож, если не получиться с позиционной, никто не помешает мне непосредственно в текст запроса втыкать дату, хотя и не красиво и коряво будет :(


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.12.2024, 12:53