Название: Обновление таблицы Отправлено: Evgeniya от Май 19, 2010, 08:30 ДОброго времени суток!!!У меня есть таблица в БД, которая содержит около 7000 строк.Она у меня отображается в QTableView с помощью запроса QSqlQueryModel. И вот После добавления/редактирования записи в этой таьлице я хочу выделить добавленную/редактированную строчку. Как известно, изначально в памяти хранится только 256 строк и соответственно, чтобы выделилась какая-нибудь 2000 строчка нужно после обновления модели
Код вызвать Код А это очень тормозит процесс обновления таблицы. Может кто-нибудь подскажет как можно по другому выдти из этой ситуации : Обновить таблицу и выделить отредактированную строчку с большим объемом информации Название: Re: Обновление таблицы Отправлено: Evgeniya от Май 19, 2010, 14:22 Вместо QSqlQueryModel использую QSqlTableModel, тогда все работает быстрее ;)
Название: Re: Обновление таблицы Отправлено: Evgeniya от Май 19, 2010, 14:29 А можно вопросик по QSqlTableModel...хочу чтобы у меня данные в таблице отображались отсортированные по нескольким столбцам...есть только метод sort(),который сортирует только по одному столбцу. Как-то не хочется только ради сортировки вьюшку в базе делать... может можно все-таки это в приложении осуществить
Название: Re: Обновление таблицы Отправлено: alexman от Май 19, 2010, 15:36 model->setQuery(str);
Здесь можно передать запрос с ключом 'ORDER BY ...'. Название: Re: Обновление таблицы Отправлено: crossly от Май 19, 2010, 15:40 Вместо QSqlQueryModel использую QSqlTableModel, тогда все работает быстрее ;) tablemodel не может работать быстрее хотя бы по тому что она унаследована от querymodel.... хотя в данном случае использование tablemodel оправдано т.к. она умеет кэшировать записиНазвание: Re: Обновление таблицы Отправлено: Evgeniya от Май 19, 2010, 17:38 model->setQuery(str); А по другому нельзя???Здесь можно передать запрос с ключом 'ORDER BY ...'. Просто для класса QSqlTableModel метод setQuery() - закрытый ... Название: Re: Обновление таблицы Отправлено: crossly от Май 20, 2010, 13:56 можно.... метод
Код: void QSqlTableModel::sort ( int column, Qt::SortOrder order ) [virtual] Название: Re: Обновление таблицы Отправлено: Kolobok от Май 20, 2010, 15:35 Можно setFilter( const QString & filter ) для этого использовать. Примерно так:
Код: setFilter( "1=1 order by 1,2,3" ); Название: Re: Обновление таблицы Отправлено: crossly от Май 20, 2010, 15:39 это костыль.... sort(...) добавляет order by к запросу...
Название: Re: Обновление таблицы Отправлено: Kolobok от Май 20, 2010, 15:41 хочу чтобы у меня данные в таблице отображались отсортированные по нескольким столбцам...есть только метод sort(),который сортирует только по одному столбцу. Название: Re: Обновление таблицы Отправлено: Evgeniya от Май 21, 2010, 13:37 Можно setFilter( const QString & filter ) для этого использовать. Примерно так: Код: setFilter( "1=1 order by 1,2,3" ); Спасибо большое!!! так получилось!! А не подскажите после Код
select(); нужно ставить?? Название: Re: Обновление таблицы Отправлено: Kolobok от Май 21, 2010, 14:30 Ну нельзя же настолько ленивой быть. Достаточно посмотреть описание setFilter() в асистенте.
Цитировать Если модель уже заполнена данными из БД, модель перевыберет их с учётом нового фильтра. В противном случае, фильтр будет применён при следующем вызове select(). |