Russian Qt Forum
Май 03, 2024, 13:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как зарефрешить модель???  (Прочитано 4362 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« : Август 04, 2008, 09:54 »

Никак не могу вдуплить. Грустный
Есть QSqlQueryModel, в проге добавляю запись через QSlqQuery, дальше нужно зарефрешить модель, чтобы подтянуть запись. Но как это сделать?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
spirit
Гость
« Ответ #1 : Август 04, 2008, 10:00 »

а заюзать
Код:
void QSqlQueryModel::setQuery ( const QSqlQuery & query )
нельзя?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Август 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);
Это каждый раз повторять???
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ритт
Гость
« Ответ #3 : Август 08, 2008, 21:15 »

* QSqlQueryModel не расчитана на перезапрос один-в-один
* если кол-во столбцов (точнее, рекорд запроса) не меняется, столбцы в модели остаются нетронутыми (твой случай) - тебе не придётся устанавливать хидерДату и прятать столбцы во вьюхе
* model->setQuery(model->query()) не создаст новый результат, а будет использовать старый

итого:
Код:
model->setQuery(model->query().lastQuery())
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.12 секунд. Запросов: 23.