crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
maint
  опции профиля:
сообщение 22.5.2010, 3:49
Сообщение #11


Участник
**

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

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 21.5.2010, 23:46) *
Цитата(maint @ 21.5.2010, 19:04) *
Как встать в модели на запись с ключом, ну скажем 30
а её может и не быть в модели в данный момент

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

вдогонку, функция интерактивного-визуального поиска в довольно часто используется в работе с базами данных. Т.е побоку SQL остается обычный перебор. Даже без seek как в DBASE IV. Прогресс однако ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.5.2010, 5:05
Сообщение #12


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

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(maint @ 22.5.2010, 7:49) *
Хреновастый инструмент получается, ущербный
модель - не курсор, свою задачу она выполняет на 5.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 22.5.2010, 5:19
Сообщение #13


Участник
**

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

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 22.5.2010, 11:05) *
Цитата(maint @ 22.5.2010, 7:49) *
Хреновастый инструмент получается, ущербный
модель - не курсор, свою задачу она выполняет на 5.

курсор, как таковой изжит, в QT4 в пользу моделей, которые не могут осуществлять его функции. Так что, не вижу хорошего метода создания интерактивного поиска. Невозможность сделать то, что делают давно и многие ;). Шаг назад, однако
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.5.2010, 8:33
Сообщение #14


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

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


по идее модели для SQL поддерживают операцию fetch, т.е. если перемешаться по модели в стиле представления (надо посмотреть как оно это делает), то модель будет читать данные, которые ещё не читала.

А вообще для работы в стиле курсора есть класс QSqlQuery
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 22.5.2010, 9:00
Сообщение #15


Участник
**

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

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 22.5.2010, 14:33) *
по идее модели для SQL поддерживают операцию fetch, т.е. если перемешаться по модели в стиле представления (надо посмотреть как оно это делает), то модель будет читать данные, которые ещё не читала.

А вообще для работы в стиле курсора есть класс QSqlQuery

про query - все понятно. Но с начала темы идет задача поиска. Есть допустим отображение некого справочника (QTableView + QSqlTableModel) имеющего поле "имя", в котором надо искать вхождение заданной строки.

Допустим, мы сделали запрос и нашли запись с ключем, удовлетворяющим условие. Теперь неплохо было бы в отображаемой модели встать на эту запись по ключу. Не вижу способов реализации. Только перебор по списку. А это грустно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.5.2010, 11:56
Сообщение #16


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

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(maint @ 22.5.2010, 13:00) *
сделали запрос и нашли запись с ключем, удовлетворяющим условие.
запрос делали в БД и получили первичный ключ и по первичному ключу нужно сделать текущей строку в представлении?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 22.5.2010, 12:07
Сообщение #17


Участник
**

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

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 22.5.2010, 17:56) *
Цитата(maint @ 22.5.2010, 13:00) *
сделали запрос и нашли запись с ключем, удовлетворяющим условие.
запрос делали в БД и получили первичный ключ и по первичному ключу нужно сделать текущей строку в представлении?

совершенно верно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.5.2010, 13:12
Сообщение #18


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

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


maint, Ну это довольно просто, нужно воспользоваться моделью выделения (QItemSelectionModel).
Получаешь её у представления (table->selectionModel()).
Затем у модели данных просишь найти в заданной колонке нужное значение (QAbstractItemModel::match)
В качестве начального индекса передаёшь: QModelIndex(0, столбец_с_ПК, QModelIndex)
Т.к. этот столбец - первичный ключ, то значения в нём уникальны, следовательно первый же результат и будет индекс соответствующий строке с данным ПК, его передаёшь в модель выделения.

П.С. метод QAbstractItemModel::match можно использовать и для поиска по модели, не забираясь в БД

П.П.С. MoPDoBoPoT уже упоминал насчёт fetch, если рельтат поиска пустой, то нужно пользоваться методом fetch
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 22.5.2010, 14:58
Сообщение #19


Участник
**

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

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 22.5.2010, 19:12) *
maint, Ну это довольно просто, нужно воспользоваться моделью выделения (QItemSelectionModel).
Получаешь её у представления (table->selectionModel()).
Затем у модели данных просишь найти в заданной колонке нужное значение (QAbstractItemModel::match)
В качестве начального индекса передаёшь: QModelIndex(0, столбец_с_ПК, QModelIndex)
Т.к. этот столбец - первичный ключ, то значения в нём уникальны, следовательно первый же результат и будет индекс соответствующий строке с данным ПК, его передаёшь в модель выделения.

П.С. метод QAbstractItemModel::match можно использовать и для поиска по модели, не забираясь в БД

П.П.С. MoPDoBoPoT уже упоминал насчёт fetch, если рельтат поиска пустой, то нужно пользоваться методом fetch

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

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.6.2025, 22:31