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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Qt+SQLite поиск в отдельном окне  (Прочитано 11228 раз)
AlphaGh0St
Гость
« : Декабрь 13, 2012, 17:49 »

Всем привет!
Суть в следующем: в главном окне программы таблица (QTableView), которая связана с моделью (QSqlTableModel) и содержит данные из таблицы БД.

В отдельном окне хочу сделать поиск.
Окно поиска так же содержит таблицу (QTableView) и в ней должны отображаться все найденные записи, при этом таблица главного окна не должна изменяться во время поиска.

Подскажите, как лучше всего это сделать?
Благодарю.
Записан
mutineer
Гость
« Ответ #1 : Декабрь 13, 2012, 17:57 »

Используй QSqlQueryModel
Записан
AlphaGh0St
Гость
« Ответ #2 : Декабрь 13, 2012, 18:19 »

Можно подробнее, как всё это сделать?
Записан
mutineer
Гость
« Ответ #3 : Декабрь 13, 2012, 18:21 »

Точно так же, как в главном окне, только вместо QSqlTableModel используй QSqlQueryModel. Как ей пользоваться есть в справке. Ну это если под словами "хочу сделать поиск" имеется в виду некий SELECT запрос к базе
Записан
AlphaGh0St
Гость
« Ответ #4 : Декабрь 13, 2012, 18:30 »

Да, SELECT запрос.
Для QSqlTableModel есть методы QSqlDatabase::addDatabase() и setDatabaseName(), а как связать QSqlQueryModel с БД?
Записан
mutineer
Гость
« Ответ #5 : Декабрь 13, 2012, 18:38 »

void QSqlQueryModel::setQuery ( const QString & query, const QSqlDatabase & db = QSqlDatabase() )

Документацию не хочешь читать?
Записан
AlphaGh0St
Гость
« Ответ #6 : Декабрь 13, 2012, 19:16 »

Недоглядел(
Спасибо))
Записан
AlphaGh0St
Гость
« Ответ #7 : Декабрь 13, 2012, 22:10 »

Возникла ещё одна проблемка, чтобы не создавать новую тему, спрошу здесь.

выполняю запрос:
Код:
SELECT * FROM MainTable ORDER BY Sum;

В SQLiteManager'e запрос успешно выполняется и корректно сортирует данные, а при выполнении этого запроса через QSqlQueryModel, сортировка получается некорректная.

Подскажите, в чём проблема?
Записан
LEO
Гость
« Ответ #8 : Декабрь 14, 2012, 12:30 »

в чем некорректность сортировки?

Код:
SELECT * FROM MainTable ORDER BY Sum desc;
- по убыванию;

Код:
SELECT * FROM MainTable ORDER BY Sum;
- по возрастанию;


Записан
AlphaGh0St
Гость
« Ответ #9 : Декабрь 14, 2012, 16:27 »

Именно такие запросы и выполняю, вот, что получаю:




Как видите, сортировка проходит, но не совсем корректно.
Записан
mutineer
Гость
« Ответ #10 : Декабрь 14, 2012, 16:38 »

Вижу только что первая картинка отсортирована по коду, вторая не грузится
Записан
kolob
Частый гость
***
Offline Offline

Сообщений: 296



Просмотр профиля
« Ответ #11 : Декабрь 14, 2012, 18:54 »

и вторая отсортирована по коду
точно не помню, но в запросе нужно непосредственно указывать столбец по которому сортируешь

Код:
SELECT Sum FROM MainTable ORDER BY Sum;

SELECT * FROM MainTable.Sum ORDER BY Sum;
« Последнее редактирование: Декабрь 14, 2012, 19:02 от kolob » Записан

Qt 5.11.0, Win, MinGW
AlphaGh0St
Гость
« Ответ #12 : Декабрь 15, 2012, 11:32 »

Код:
SELECT * FROM MainTable.Sum ORDER BY Sum;
Так не получается, в таблицу данные не выходят, а SQLiteManager пишет, что нет таблицы "MainTable.Sum"
Записан
kolob
Частый гость
***
Offline Offline

Сообщений: 296



Просмотр профиля
« Ответ #13 : Декабрь 16, 2012, 08:12 »

Значит надо перечислить все поля которые ты используешь для заполнения таблицы
Записан

Qt 5.11.0, Win, MinGW
carrygun
Гость
« Ответ #14 : Декабрь 17, 2012, 06:10 »

Можно еще попробовать написать в кавычках `sum`, а то мало ли.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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