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();

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


Участник
**

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

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




Репутация:   4  


думаю, надо бы после селекта делать это:
tableView->setModel(model)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rezor
  опции профиля:
сообщение 25.2.2011, 20:34
Сообщение #3


Студент
*

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

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




Репутация:   0  


Результат тот же!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 25.2.2011, 20:50
Сообщение #4


Участник
**

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

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




Репутация:   4  


но дело всё равно должно быть в представлении, разбирайся с ним
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rezor
  опции профиля:
сообщение 25.2.2011, 21:11
Сообщение #5


Студент
*

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

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




Репутация:   0  


Я понимаю что в нем, вот мучаюсь!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 25.2.2011, 21:41
Сообщение #6


Участник
**

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

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




Репутация:   4  


прочитай, что написано в QAbstractItemView::setModel
может, это твой случай

а, может быть, перед установкой новой модели:
QTableView::clearSpans ()

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


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

Группа: Сомодератор
Сообщений: 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());
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rezor
  опции профиля:
сообщение 26.2.2011, 9:43
Сообщение #8


Студент
*

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

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




Репутация:   0  


Огромное спасибо, действительно при передаче пустой строки все заработало!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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