![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
maint |
![]()
Сообщение
#11
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
Как встать в модели на запись с ключом, ну скажем 30 а её может и не быть в модели в данный моменттогда получается, что пошаговый-интерактивный поиск в таблице с помощью моделей невозможен. Хреновастый инструмент получается, ущербный вдогонку, функция интерактивного-визуального поиска в довольно часто используется в работе с базами данных. Т.е побоку SQL остается обычный перебор. Даже без seek как в DBASE IV. Прогресс однако ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#12
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
maint |
![]()
Сообщение
#13
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
Хреновастый инструмент получается, ущербный модель - не курсор, свою задачу она выполняет на 5.курсор, как таковой изжит, в QT4 в пользу моделей, которые не могут осуществлять его функции. Так что, не вижу хорошего метода создания интерактивного поиска. Невозможность сделать то, что делают давно и многие ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#14
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
по идее модели для SQL поддерживают операцию fetch, т.е. если перемешаться по модели в стиле представления (надо посмотреть как оно это делает), то модель будет читать данные, которые ещё не читала.
А вообще для работы в стиле курсора есть класс QSqlQuery |
|
|
maint |
![]()
Сообщение
#15
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
по идее модели для SQL поддерживают операцию fetch, т.е. если перемешаться по модели в стиле представления (надо посмотреть как оно это делает), то модель будет читать данные, которые ещё не читала. А вообще для работы в стиле курсора есть класс QSqlQuery про query - все понятно. Но с начала темы идет задача поиска. Есть допустим отображение некого справочника (QTableView + QSqlTableModel) имеющего поле "имя", в котором надо искать вхождение заданной строки. Допустим, мы сделали запрос и нашли запись с ключем, удовлетворяющим условие. Теперь неплохо было бы в отображаемой модели встать на эту запись по ключу. Не вижу способов реализации. Только перебор по списку. А это грустно. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#16
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
maint |
![]()
Сообщение
#17
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#18
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
maint, Ну это довольно просто, нужно воспользоваться моделью выделения (QItemSelectionModel).
Получаешь её у представления (table->selectionModel()). Затем у модели данных просишь найти в заданной колонке нужное значение (QAbstractItemModel::match) В качестве начального индекса передаёшь: QModelIndex(0, столбец_с_ПК, QModelIndex) Т.к. этот столбец - первичный ключ, то значения в нём уникальны, следовательно первый же результат и будет индекс соответствующий строке с данным ПК, его передаёшь в модель выделения. П.С. метод QAbstractItemModel::match можно использовать и для поиска по модели, не забираясь в БД П.П.С. MoPDoBoPoT уже упоминал насчёт fetch, если рельтат поиска пустой, то нужно пользоваться методом fetch |
|
|
maint |
![]()
Сообщение
#19
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
maint, Ну это довольно просто, нужно воспользоваться моделью выделения (QItemSelectionModel). Получаешь её у представления (table->selectionModel()). Затем у модели данных просишь найти в заданной колонке нужное значение (QAbstractItemModel::match) В качестве начального индекса передаёшь: QModelIndex(0, столбец_с_ПК, QModelIndex) Т.к. этот столбец - первичный ключ, то значения в нём уникальны, следовательно первый же результат и будет индекс соответствующий строке с данным ПК, его передаёшь в модель выделения. П.С. метод QAbstractItemModel::match можно использовать и для поиска по модели, не забираясь в БД П.П.С. MoPDoBoPoT уже упоминал насчёт fetch, если рельтат поиска пустой, то нужно пользоваться методом fetch спасибо, буду пробовать |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 4.6.2025, 22:31 |