Название: Qt+SQLite поиск в отдельном окне Отправлено: AlphaGh0St от Декабрь 13, 2012, 17:49 Всем привет!
Суть в следующем: в главном окне программы таблица (QTableView), которая связана с моделью (QSqlTableModel) и содержит данные из таблицы БД. В отдельном окне хочу сделать поиск. Окно поиска так же содержит таблицу (QTableView) и в ней должны отображаться все найденные записи, при этом таблица главного окна не должна изменяться во время поиска. Подскажите, как лучше всего это сделать? Благодарю. Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: mutineer от Декабрь 13, 2012, 17:57 Используй QSqlQueryModel
Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: AlphaGh0St от Декабрь 13, 2012, 18:19 Можно подробнее, как всё это сделать?
Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: mutineer от Декабрь 13, 2012, 18:21 Точно так же, как в главном окне, только вместо QSqlTableModel используй QSqlQueryModel. Как ей пользоваться есть в справке. Ну это если под словами "хочу сделать поиск" имеется в виду некий SELECT запрос к базе
Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: AlphaGh0St от Декабрь 13, 2012, 18:30 Да, SELECT запрос.
Для QSqlTableModel есть методы QSqlDatabase::addDatabase() и setDatabaseName(), а как связать QSqlQueryModel с БД? Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: mutineer от Декабрь 13, 2012, 18:38 void QSqlQueryModel::setQuery ( const QString & query, const QSqlDatabase & db = QSqlDatabase() )
Документацию не хочешь читать? Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: AlphaGh0St от Декабрь 13, 2012, 19:16 Недоглядел(
Спасибо)) Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: AlphaGh0St от Декабрь 13, 2012, 22:10 Возникла ещё одна проблемка, чтобы не создавать новую тему, спрошу здесь.
выполняю запрос: Код: SELECT * FROM MainTable ORDER BY Sum; В SQLiteManager'e запрос успешно выполняется и корректно сортирует данные, а при выполнении этого запроса через QSqlQueryModel, сортировка получается некорректная. Подскажите, в чём проблема? Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: LEO от Декабрь 14, 2012, 12:30 в чем некорректность сортировки?
Код: SELECT * FROM MainTable ORDER BY Sum desc; Код: SELECT * FROM MainTable ORDER BY Sum; Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: AlphaGh0St от Декабрь 14, 2012, 16:27 Именно такие запросы и выполняю, вот, что получаю:
(http://s001.radikal.ru/i194/1212/2c/81c37d18b497.jpg) (http://s019.radikal.ru/i607/1212/b7/35c3d0117bc7.jpg) Как видите, сортировка проходит, но не совсем корректно. Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: mutineer от Декабрь 14, 2012, 16:38 Вижу только что первая картинка отсортирована по коду, вторая не грузится
Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: kolob от Декабрь 14, 2012, 18:54 и вторая отсортирована по коду
точно не помню, но в запросе нужно непосредственно указывать столбец по которому сортируешь Код: SELECT Sum FROM MainTable ORDER BY Sum; Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: AlphaGh0St от Декабрь 15, 2012, 11:32 Код: SELECT * FROM MainTable.Sum ORDER BY Sum; Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: kolob от Декабрь 16, 2012, 08:12 Значит надо перечислить все поля которые ты используешь для заполнения таблицы
Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: carrygun от Декабрь 17, 2012, 06:10 Можно еще попробовать написать в кавычках `sum`, а то мало ли.
Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: Figaro от Декабрь 17, 2012, 07:48 Схема/структура таблицы?
Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: AlphaGh0St от Декабрь 17, 2012, 11:53 Подскажите, как перечислить все поля? Через точку?
Код: SELECT * FROM MainTable.Code.Surname.Name.Sum ORDER BY Sum; (http://s005.radikal.ru/i210/1212/9d/0c046c105704.jpg) Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: kolob от Декабрь 17, 2012, 12:24 А вот так не пробовал:
Код: SELECT Code, Surname, Name, Sum FROM MainTable ORDER BY Sum; Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: carrygun от Декабрь 17, 2012, 12:47 Можно вот так еще попробовать:
Код: SELECT * FROM MainTable ORDER BY 4 Название: Re: Qt+SQLite поиск в отдельном окне Отправлено: AlphaGh0St от Декабрь 18, 2012, 15:54 Код: SELECT * FROM MainTable ORDER BY 4 |