crossplatform.ru

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

> [РЕШЕНО] Опрос всей БД
rezor
  опции профиля:
сообщение 25.2.2011, 10:46
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 26
Регистрация: 1.4.2009
Пользователь №: 655

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




Репутация:   0  


После нескольких фильтров setFilter нужно заново опросить и вывести все поля базы.
Делаю так
Цитата
model_owner->setTable("Info_Owner");
model_owner->select();
model_info_animal->setTable("Information_Animal");
model_info_animal->select();
model_ifno_disease->setTable("Information_Disease");
model_ifno_disease->select();
model_info_outcome->setTable("Treatment_Outcome");
model_info_outcome->select();

Записи выводятся но создаются пустые строки которые отображаются в модели , но в базу не заносятся.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 26.2.2011, 7:20
Сообщение #2


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

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

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




Репутация:   94  


Цитата(abc @ 25.2.2011, 22:07) *
думаю, надо бы после селекта делать это:
tableView->setModel(model)
нет не нужно, модель он не меняет.

из описания функции void QSqlTableModel::setFilter ( const QString & filter ) [virtual]:
Цитата
Если модель уже заполнена данными из БД, модель перевыберет их с учётом нового фильтра. В противном случае, фильтр будет применён при следующем вызове select().
Т.е. фильтр будет работать после выборки.

К сожалению в Асистенте я быстро не нашёл, как отменить фильтрацию, но в коде этого класса видно такие строки:
    if (!d->filter.isEmpty())
        query.append(QLatin1String(" WHERE ")).append(d->filter);
Т.е., чтобы отменить фильтрацию нужно передать пустую строку в качестве фильтра:
model->setFilter("");
// ИЛИ
model->setFilter(QString());
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Тема закрытаНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 23.11.2024, 7:02