crossplatform.ru

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

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


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

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

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




Репутация:   44  


Цитата(amakaro4 @ 29.9.2009, 16:02) *
true true
-1
"1468"
"1469"
"1470"
"1471"
"1472"
"1473"
"1474"
"1475"
"1476"
"1548"
опять только колонки

Вроде где то читал, что при некоторых параметрах количество строк нельзя определить, т.е. возможно при forwardOnly == true, это так и есть. Поэтому size() и возвращает -1, возможно это нормально.
А сами данные это то что надо? Тогда, скорее всего, запрос отрабатывает нормально и нужно разбираться с моделью.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
amakaro4
  опции профиля:
сообщение 29.9.2009, 15:10
Сообщение #22


Студент
*

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

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




Репутация:   0  


Цитата(BRE @ 29.9.2009, 16:07) *
Цитата(amakaro4 @ 29.9.2009, 16:02) *
true true
-1
"1468"
"1469"
"1470"
"1471"
"1472"
"1473"
"1474"
"1475"
"1476"
"1548"
опять только колонки

Вроде где то читал, что при некоторых параметрах количество строк нельзя определить, т.е. возможно при forwardOnly == true, это так и есть. Поэтому size() и возвращает -1, возможно это нормально.
А сами данные это то что надо? Тогда, скорее всего, запрос отрабатывает нормально и нужно разбираться с моделью.



Сами данные верны... Это ID-шники
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 29.9.2009, 15:52
Сообщение #23


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

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

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




Репутация:   44  


Цитата(amakaro4 @ 29.9.2009, 16:10) *
Сами данные верны... Это ID-шники

Какие еще мысли есть...
Если количество строк ответа QSqlQuery определить не может (возможно из-за forwardOnly == true), то модель такую ситуацию нормально обработать не может, т.к. ей для работы необходимо знать точное количество строк и столбцов.
Возможно я все усложняю, но можно попробовать получать количество строк самому. Соответственно придется переопределить класс QSqlQueryModel для использования этого значения.

Повторюсь, возможно я все усложняю и это можно сделать проще. ;)

Кстати, можно попробовать поиграться с fetchMore.
Из assistant:
Цитата
void QSqlQueryModel::fetchMore ( const QModelIndex & parent = QModelIndex() ) [virtual]

Fetches more rows from a database. This only affects databases that don't report back the size of a query (see QSqlDriver::hasFeature()).

To force fetching of the entire database, you can use the following:

while (myModel->canFetchMore())
myModel->fetchMore();
parent should always be an invalid QModelIndex.

Reimplemented from QAbstractItemModel.

This function was introduced in Qt 4.1.

See also canFetchMore().
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.9.2009, 15:55
Сообщение #24


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(amakaro4 @ 29.9.2009, 19:02) *
{call src_License}
а откуда такая форма записи? с какой СУБД работаешь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
amakaro4
  опции профиля:
сообщение 29.9.2009, 15:59
Сообщение #25


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 29.9.2009, 16:55) *
Цитата(amakaro4 @ 29.9.2009, 19:02) *
{call src_License}
а откуда такая форма записи? с какой СУБД работаешь?




MSQL через ODBC поскольку на прямую не получилось...

правильный вызов exec src_License но команду exec модель выплевывает с ошибкой
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.9.2009, 16:03
Сообщение #26


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Например, я при работе с firebird, через ODBC. Использую радную для Firebird форму запроса:
q.exec("execute procedure my_procedure");

Вместо абстрактно ODBC'шной
query.exec("{call STORED_PROC}");


Цитата(amakaro4 @ 29.9.2009, 19:59) *
правильный вызов exec src_License но команду exec модель выплевывает с ошибкой
Вот это читал: Поддержка хранимых процедур в QMYSQL?
Попробуй такую форму записи, вне зависимости от драйвера
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
amakaro4
  опции профиля:
сообщение 29.9.2009, 16:18
Сообщение #27


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 29.9.2009, 17:03) *
Например, я при работе с firebird, через ODBC. Использую радную для Firebird форму запроса:
q.exec("execute procedure my_procedure");

Вместо абстрактно ODBC'шной
query.exec("{call STORED_PROC}");


Цитата(amakaro4 @ 29.9.2009, 19:59) *
правильный вызов exec src_License но команду exec модель выплевывает с ошибкой
Вот это читал: Поддержка хранимых процедур в QMYSQL?
Попробуй такую форму записи, вне зависимости от драйвера



из всех способов вернул хотя бы колонки только ql.exec("execute src_License");

были испробованы:
"{call execute src_license}"
"{call src_license}" // ВОЗВРАЩАЕТ КОЛОНКИ
"execute procedure src_license"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.9.2009, 16:24
Сообщение #28


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


amakaro4, перестань цитировать целыми сообщениями.

Как себя ведёт:
q.exec("call src_license");

При вкл. и выкл. setForwardOnly?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
amakaro4
  опции профиля:
сообщение 29.9.2009, 16:35
Сообщение #29


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 29.9.2009, 17:24) *
amakaro4, перестань цитировать целыми сообщениями.

Как себя ведёт:
q.exec("call src_license");

При вкл. и выкл. setForwardOnly?



вовсех случаях int numRows = ql.at(); равен -1 как и ql.size()... Значения при этом не набираются... С фигурными скобками numRows = 0 и значения набираются...

QSqlRecord rec = ql.record();
qDebug() << rec.count();

возвращает 53... может блин с этим как-то поиграться
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.9.2009, 16:44
Сообщение #30


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(amakaro4 @ 29.9.2009, 20:35) *
возвращает 53
Это означает, что столбцов (полей), возвращаемых запросом = 53

Предлагаю, такой тест. Запусти демку %QTDIR%/domos/sqlbrowser
Подключись к БД, и в поле запроса введи вызов ХПв стиле принятом в Мускуле.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 26.12.2024, 22:28