Название: QSqlTableModel + QTableView выделение последней введенной записи Отправлено: dilshodm от Сентябрь 18, 2007, 20:51 Здравствуйте,
Есть форма, где отображена таблица QTableView *table, показывающая данные с QSqlTableModel *model. На этой форме есть кнопка "Add", которая вызывает диалог, где пользователь вводит данные для новой записи. При закрытии диалога, введенные данные записываются в БД через model->insertRecord(-1, record). Чтобы изменения отобразились в таблице, делаю model->select(). Задача: надо установить курсор в таблице на свежевведенную строку. Как лучше это сделать? Причем, таблица может быть отсортирована по разным полям, и введенная строка скорее всего окажется не нулевой и не последней строкой таблицы. Пока приходится перебирать все записи на предмет поиска наибольшего id (id последней записи является наибольшей). Название: Re: QSqlTableModel + QTableView выделение последней введенной записи Отправлено: bigirbis от Сентябрь 19, 2007, 10:10 Попробуй это:
Цитировать QVariant QSqlQuery::lastInsertId () const Returns the object ID of the most recent inserted row if the database supports it. An invalid QVariant will be returned if the query did not insert any value or if the database does not report the id back. If more than one row was touched by the insert, the behavior is undefined. Note that for Oracle databases the row's ROWID will be returned, while for MySQL databases the row's auto-increment field will be returned. See also QSqlDriver::hasFeature(). Название: Re: QSqlTableModel + QTableView выделение последней введенной записи Отправлено: Alexandr Az от Сентябрь 19, 2007, 10:38 QSqlQuery::lastInsertId () - это не то немножко.... Точнее совсем не то.
Возвращает исскуственный ключ с сервера последней записи... А если ключ естественный??? Стоило указать версию куте, в 4.3.х тебе не прийдётся с сервака селекты такие дикие делать при каждом апдейте, достаточно вставить в модель, чтобы оно отобразилось в представлении bool insertRecord ( int row, const QSqlRecord & record ) Название: Re: QSqlTableModel + QTableView выделение последней введенной записи Отправлено: Alexandr Az от Сентябрь 19, 2007, 11:39 Хех. Сорри. Не проверил.
Просто submit сделает тот же select и позиция у тебя пропадет... Ну что, остаётся токи поиск по первичному ключу во воью Название: Re: QSqlTableModel + QTableView выделение последней введенной записи Отправлено: dilshodm от Сентябрь 21, 2007, 03:32 Попробуй это: Цитировать QVariant QSqlQuery::lastInsertId () const Спасибо за наводку. По крайней мере, на SQLITE можно будет искать по этому id, вместо того, чтобы искать максимальное id. Название: Re: QSqlTableModel + QTableView выделение последней введенной записи Отправлено: zeonET от Ноябрь 07, 2010, 16:02 Хоть меня и сочтут некроманом, но ребята, помогите выделить последнюю строку.
Все как-то не могу сообразить. Есть метод добавления строки: Код: int Engine::insertGoodItem(QString name, int type, int price) Ну а потом соответственно хочу выделить ту новую строку в QTableView : Код: void Milano::on_addButton_clicked() Название: Re: QSqlTableModel + QTableView выделение последней введенной запи Отправлено: Пантер от Ноябрь 07, 2010, 17:33 Все тут правильно. Если хочешь выделить нужную ячейку, ищи ее так:
Код Где {ID} - уникальное поле. "Some value" - нужное значение. Название: Re: QSqlTableModel + QTableView выделение последней введенной запи Отправлено: Странник от Январь 27, 2011, 10:46 для поиска строки по id можно использовать QAbstractItemModel::match. ничего лучше я не нашел..
|