Хранимы процедуры, Как получить набор данных |
Здравствуйте, гость ( Вход | Регистрация )
Хранимы процедуры, Как получить набор данных |
BRE |
29.9.2009, 15:07
Сообщение
#21
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
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 |
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 |
Сами данные верны... Это 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, 15:59
Сообщение
#25
|
Студент Группа: Новичок Сообщений: 18 Регистрация: 28.9.2009 Пользователь №: 1123 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Litkevich Yuriy |
29.9.2009, 16:03
Сообщение
#26
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Например, я при работе с firebird, через ODBC. Использую радную для Firebird форму запроса:
Вместо абстрактно ODBC'шной
правильный вызов exec src_License но команду exec модель выплевывает с ошибкой Вот это читал: Поддержка хранимых процедур в QMYSQL?Попробуй такую форму записи, вне зависимости от драйвера |
|
|
amakaro4 |
29.9.2009, 16:18
Сообщение
#27
|
Студент Группа: Новичок Сообщений: 18 Регистрация: 28.9.2009 Пользователь №: 1123 Спасибо сказали: 0 раз(а) Репутация: 0 |
Например, я при работе с firebird, через ODBC. Использую радную для Firebird форму запроса:
Вместо абстрактно ODBC'шной
правильный вызов 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, перестань цитировать целыми сообщениями.
Как себя ведёт:
При вкл. и выкл. setForwardOnly? |
|
|
amakaro4 |
29.9.2009, 16:35
Сообщение
#29
|
Студент Группа: Новичок Сообщений: 18 Регистрация: 28.9.2009 Пользователь №: 1123 Спасибо сказали: 0 раз(а) Репутация: 0 |
amakaro4, перестань цитировать целыми сообщениями. Как себя ведёт:
При вкл. и выкл. 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 |
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 13:13 |