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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSQLQuery метод first()  (Прочитано 5778 раз)
jaroslav
Гость
« : Июнь 18, 2013, 15:01 »

Не могу понять, почему метод first() не позиционирует курсор на первую запись.
Например:
Код:
while (stored.next()){
 ....
}

srored.first();

while (stored.next()){
 ....
}

Второй цикл уже не будет работать. next() сразу же вернет false;
Записан
mutineer
Гость
« Ответ #1 : Июнь 18, 2013, 15:04 »

Может проблема в опечатке?
srored.first();
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #2 : Июнь 18, 2013, 15:12 »

Если не опечатка, то надо проверить возврат от функции isForwardOnly(). Если тру, то движение обратно невозможно.
Записан
jaroslav
Гость
« Ответ #3 : Июнь 18, 2013, 16:06 »

Это здесь опечатка, в коде все окей.  Улыбающийся
isForwardOnly возвращает true, хотя устанавливаю для stored setForwardOnly(false);

Какие варианты решение можете порекомендовать?
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #4 : Июнь 18, 2013, 16:30 »

setForwardOnly(false) надо звать до выполнения запроса, false по умолчанию уже задано. Также, направленность курсора в запросе сильно зависит от драйвера и СУБД. Ассистент как-бы на это намекает:
Цитировать
Setting forward only to false is a suggestion to the database engine, which has the final say on whether a result set is forward only or scrollable.
. Возможно даже придется переисполнить запрос.
« Последнее редактирование: Июнь 18, 2013, 16:32 от Hellraiser » Записан
jaroslav
Гость
« Ответ #5 : Июнь 18, 2013, 16:32 »

setForwardOnly(false) устанавливается до выполнения запроса.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Июнь 18, 2013, 18:15 »

>>isForwardOnly возвращает true, хотя устанавливаю для stored setForwardOnly(false);
значит нет других вариантов, значит возможно только движение вперёд
Записан

Юра.
jaroslav
Гость
« Ответ #7 : Июнь 19, 2013, 12:40 »

Такая штука получается, если в ХП добавить SET ROWCOUNT Х, то first() начинает фурычить, иначе только forward only.
« Последнее редактирование: Июнь 19, 2013, 12:42 от jaroslav » Записан
jaroslav
Гость
« Ответ #8 : Июнь 19, 2013, 12:49 »

Решено. Всем спасибо за ответы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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