Название: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: ROKR от Апрель 07, 2010, 15:46 В одном окне имеется QSqlQueryModel, которая выполняет запрос данных из представления. Данные выводятся в QTabelView. В другом окне через QSqlQuery происходит вызов хранимой процедуры ("EXEC ..."), после чего все данные в QSqlQueryModel из первого окна теряются. Это можно как-то исправить?
Название: Re: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: crossly от Апрель 07, 2010, 15:54 исправить можно.... код покажи....
Название: Re: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: lit-uriy от Апрель 07, 2010, 15:57 как я понимаю, всё сидит на одном соединении с БД.
Название: Re: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: ROKR от Апрель 07, 2010, 15:58 Вызов QSqlQueryModel:
Код: DatabaseView = new QTableView(); Вызов QSqlQuery: Код: if(!query->exec("EXEC MinTimeWithDriver N'" + RouteName + "', "+ Id)) Название: Re: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: ROKR от Апрель 07, 2010, 15:59 как я понимаю, всё сидит на одном соединении с БД. Да. Стоить сделать второе подключение? Название: Re: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: crossly от Апрель 07, 2010, 16:17 а что есть *db... и как query объявлен??
Название: Re: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: ROKR от Апрель 07, 2010, 16:36 а что есть *db... и как query объявлен?? В конструкторе класса: Код: QSqlDatabase *db; Объявление query: Код: QSqlQuery *query = new QSqlQuery(*db); Указатель на db передаю из окна подключения в другие классы. Хотя, видимо это не нужно... Забыл, что в еще одном классе тоже вызываю хранимую процедуру, но такой ошибки не происходит. Провел еще пару опытов и заметил, что: 1) После потери данных такое ощущение, что теряется коннект к базе, потому что другие окна с обычными QSqlRelationTabelModel не могут открыть таблицы. 2) Если эта хранимая процедура возвращает NULL, то данные не теряются. Название: Re: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: ROKR от Апрель 07, 2010, 17:24 В других местах программы вызов этой хранимой процедуры также сопровождается потерей данных.
Название: Re: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: ROKR от Апрель 07, 2010, 17:45 В output вывалилась ошибка "Подключение занято до получения результатов для другого HSTMT". Подправил хранимию процедуру, и все заработало ::) Всем спасибо!
Название: Re: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: crossly от Апрель 08, 2010, 08:43 Код: QSqlDatabase *db; Код: QSqlDatabase QSqlDatabase::database ( const QString & connectionName = QLatin1String( defaultConnection ), bool open = true ) [static] Название: Re: Сброс данных из QSqlQueryModel при вызове хранимой процедуры Отправлено: ROKR от Апрель 08, 2010, 19:35 Код: QSqlDatabase *db; Код: QSqlDatabase QSqlDatabase::database ( const QString & connectionName = QLatin1String( defaultConnection ), bool open = true ) [static] Спасибо за разъяснения! :) |