Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
10.7.2009, 10:47 | QSqlRelationalTableModel: как получить значение | ...Упс! А я и забыл, что Qt просто подменяет значение ключа... Тогда такие варианты: 1. Получать значение ключа до установления реляции. 2. В исходной таблице заводить копию поля 2. Вообще-то я тоже недавно столкнулся с этой проблемой и мне пришлось создать собственный класс на основе QSqlRelationalTableModel чтобы "доделать" реляции в Qt. Сейчас я уже и забыл про эту проблемку... |
b10t, | ||
24.6.2009, 11:02 | Хочу изменить порядок обновления данных в QSqlTableModel | Решил я эту задачку... Пришлось изучать исходный код в части работы с базами данных. Как оказалось в этом плане Qt работает довольно примитивно. При использовании политики OnFieldChange результат изменений ячейки данных в Grid сначала отправляется на сервер, а затем для того, чтобы отобразить эти изменения, посылается запрос на загрузку всех данных... Это очень неэффективно... При использовании других политик происходит примерно то же самое, только с задержкой по времени. Для OnManualSubmit - изменения загружаются после команды submilAll. Но в этом случае изменения сохраняются в буфере и отображаются в виджете Grid. Этот момент я и использовал. После множества экспериментов все свелось к простому дочернему классу:
При использовании этого класса вместо QSqlTableModel нет необходимости вызова submitAll для сохранении данных на сервере, хотя здесь и используется политика OnManualSubmit. Изменения сохраняются на сервере сразу, как только мы перемещаемся на другую ячейку, при этом фокус курсора не теряется (не изменяется). Это то, что мне и требовалось. Чем-то этот вариант похож на предложение Литкевича Юрия. |
512es, radislav72, | ||
![]() |
|
Текстовая версия | Сейчас: 10.4.2025, 14:42 |