Russian Qt Forum

Qt => Базы данных => Тема начата: Пантер от Август 04, 2008, 09:54



Название: Как зарефрешить модель???
Отправлено: Пантер от Август 04, 2008, 09:54
Никак не могу вдуплить. :(
Есть QSqlQueryModel, в проге добавляю запись через QSlqQuery, дальше нужно зарефрешить модель, чтобы подтянуть запись. Но как это сделать?


Название: Re: Как зарефрешить модель???
Отправлено: spirit от Август 04, 2008, 10:00
а заюзать
Код:
void QSqlQueryModel::setQuery ( const QSqlQuery & query )
нельзя?


Название: Re: Как зарефрешить модель???
Отправлено: Пантер от Август 04, 2008, 10:10
Да это я знаю, но вот в чем косяк - если делать model->setQuery(model->query()), не прокатывает. А если каждый раз подключать как первоначально....  Просто вот мое подключение модели
Код:
	QString qsQuery="SELECT dt.id,dt.reference_id,dt.reference_date, vt.name, summa, vat.name, ot.name "
"FROM DOHOD_TABLE dt "
"LEFT JOIN VIDDOHOD vt ON vt.id=dt.viddohod "
"LEFT JOIN OSNDOHOD ot ON ot.id=dt.osndohod "
"LEFT JOIN VALUTA vat ON vat.id=dt.valuta "
"WHERE (dt.reference_id=%1)"
"ORDER BY dt.viddohod,dt.reference_date";
qsqmDohod->setQuery(qsQuery.arg(referenceID));
qsqmDohod->setHeaderData(2, Qt::Horizontal, tr("Дата"));
qsqmDohod->setHeaderData(3, Qt::Horizontal, tr("Вид дохода"));
qsqmDohod->setHeaderData(4, Qt::Horizontal, tr("Сумма"));
qsqmDohod->setHeaderData(5, Qt::Horizontal, tr("Валюта"));
qsqmDohod->setHeaderData(6, Qt::Horizontal, tr("Основание"));

qtvDohod->setModel(qsqmDohod);
qtvDohod->hideColumn(0);
qtvDohod->hideColumn(1);
Это каждый раз повторять???


Название: Re: Как зарефрешить модель???
Отправлено: ритт от Август 08, 2008, 21:15
* QSqlQueryModel не расчитана на перезапрос один-в-один
* если кол-во столбцов (точнее, рекорд запроса) не меняется, столбцы в модели остаются нетронутыми (твой случай) - тебе не придётся устанавливать хидерДату и прятать столбцы во вьюхе
* model->setQuery(model->query()) не создаст новый результат, а будет использовать старый

итого:
Код:
model->setQuery(model->query().lastQuery())