crossplatform.ru

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

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> Хранимы процедуры, Как получить набор данных
BRE
  опции профиля:
сообщение 29.9.2009, 13:34
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Цитата(amakaro4 @ 29.9.2009, 14:26) *
Читал... Флаг проставлен, все прописано... Если чего-то не догоняю - Объясни пожалуйста.

Ты устанавливаешь флаг forwardOnly объекту, который будет уничтожен следующей строкой:
model->setQuery("{call src_License}");

Эта строка создаст новый объект QSqlQuery у которого этот флаг будет установлен в false (по умолчанию).
Попробуй поменять местами строки:
model->setQuery("{call src_License}");
model->query().setForwardOnly(true);
model->query().exec();


или создавай и устанавливай объект QSqlQuery сам:
QSqlQuery q;
q.prepare( ... );
q.setForwardOnly( true );
model->setQuery( q );


Тут есть тонкий момент, если создавать объект QSqlQuery так:
QSqlQuery q( "Запрос" );

то этот запрос автоматически выполняется (exec).

Если нужно сначала установить флаг, а потом выполнить запрос, то нужно сделать примерно так:
QSqlQuery q;
q.setForwardOnly( true );
q.exec( "Запрос" );


Сообщение отредактировал BRE - 29.9.2009, 13:44
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
amakaro4
  опции профиля:
сообщение 29.9.2009, 13:41
Сообщение #12


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 28.9.2009
Пользователь №: 1123

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




Репутация:   0  


Цитата(BRE @ 29.9.2009, 14:34) *
Цитата(amakaro4 @ 29.9.2009, 14:26) *
Читал... Флаг проставлен, все прописано... Если чего-то не догоняю - Объясни пожалуйста.

Ты устанавливаешь флаг forwardOnly объекту, который будет уничтожен следующей строкой:
model->setQuery("{call src_License}");

Эта строка создаст новый объект QSqlQuery у которого этот флаг будет установлен в false (по умолчанию).
Попробуй поменять местами строки:
model->setQuery("{call src_License}");
model->query().setForwardOnly(true);
model->query().exec();


или создавай и устанавливай объект QSqlQuery сам:
QSqlQuery q;
q.prepare( ... );
q.setForwardOnly( true );
model->setQuery( q );





Спасибо за терпение... В результате все равно только заголовки, но самое главное я понял...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 29.9.2009, 13:45
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Я там дописал свой предыдущий пост. Посмотри. Думаю в этом дело.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
amakaro4
  опции профиля:
сообщение 29.9.2009, 13:55
Сообщение #14


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 28.9.2009
Пользователь №: 1123

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




Репутация:   0  


Цитата(BRE @ 29.9.2009, 14:45) *
Я там дописал свой предыдущий пост. Посмотри. Думаю в этом дело.


QSqlQuery ql;
ql.prepare("{call src_License}");
ql.setForwardOnly(true);
ql.exec(); // БЕЗ ЭТОГО НЕТ ДАЖЕ КОЛОНОК
model.setQuery(ql);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 29.9.2009, 14:08
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Я правильно понимаю, что сам запрос отрабатывает нормально и выполняет указанную процедуру?

Попробуй проверить как указанно в документации:
QSqlQuery ql;
ql.setForwardOnly( true );
ql.exec( "{call src_License}" );
qDebug() << ql;

Если сам запрос отработает корректно и вернет нужные данные, тогда будет дальше разбираться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
amakaro4
  опции профиля:
сообщение 29.9.2009, 14:38
Сообщение #16


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 28.9.2009
Пользователь №: 1123

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




Репутация:   0  


Цитата(BRE @ 29.9.2009, 15:08) *
qDebug() << ql;

No match for 'operator <<' и так далее...

Извини я с Си только знакомлюсь. В С# я такого не припомню

Подправил на qDebug на QDebug на выходе имею
error: expected unqualified-id before '<<' token
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 29.9.2009, 14:38
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Упс, это я не досмотрел, что для QSqlQuery не предусмотрен отладочный вывод.
Попробуй посмотреть сам, вместо qDebug() << ql:
qDebug() << ql.isValid() << ql.isActive(); // запрос верен и активен
qDebug() << ql.size(); // количество строк в ответе
// значения нулевого столбца каждой строки
while ( ql.next())
         qDebug() << ql.value(0).toString();

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
amakaro4
  опции профиля:
сообщение 29.9.2009, 14:41
Сообщение #18


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 28.9.2009
Пользователь №: 1123

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




Репутация:   0  


Запускается C:\Qt\2009.03\qt\examples\sql\relationaltablemodel\debug\relationaltablemodel.exe...
false true
-1
"1467"
"1468"
"1469"
"1470"
"1471"
"1472"
"1473"
"1474"
"1475"
"1476"
"1548"

C:\Qt\2009.03\qt\examples\sql\relationaltablemodel\debug\relationaltablemodel.exe завершилась с кодом 0
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 29.9.2009, 14:48
Сообщение #19


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Цитата(amakaro4 @ 29.9.2009, 15:41) *
Запускается C:\Qt\2009.03\qt\examples\sql\relationaltablemodel\debug\relationaltablemodel.exe...
false true
-1
C:\Qt\2009.03\qt\examples\sql\relationaltablemodel\debug\relationaltablemodel.exe завершилась с кодом 0

Вот тут нужно разбираться, почему QSqlQuery считает ответ не валидным. Возможно дело в функции.
Может у камрадов будут мысли по этому поводу, я с ODBC никогда дел не имел.

Сообщение отредактировал BRE - 29.9.2009, 14:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
amakaro4
  опции профиля:
сообщение 29.9.2009, 15:02
Сообщение #20


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 28.9.2009
Пользователь №: 1123

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




Репутация:   0  


Цитата(BRE @ 29.9.2009, 15:48) *
Цитата(amakaro4 @ 29.9.2009, 15:41) *
Запускается C:\Qt\2009.03\qt\examples\sql\relationaltablemodel\debug\relationaltablemodel.exe...
false true
-1
C:\Qt\2009.03\qt\examples\sql\relationaltablemodel\debug\relationaltablemodel.exe завершилась с кодом 0

Вот тут нужно разбираться, почему QSqlQuery считает ответ не валидным. Возможно дело в функции.
Может у камрадов будут мысли по этому поводу, я с ODBC никогда дел не имел.



Все равно спасибо...


добавил в код вызо first()

ql.exec( "{call src_License}" );
ql.first();

true true
-1
"1468"
"1469"
"1470"
"1471"
"1472"
"1473"
"1474"
"1475"
"1476"
"1548"

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

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 27.12.2024, 13:39