![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Tarigan |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 11 Регистрация: 20.4.2012 Пользователь №: 3336 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день.
Есть 1 таблица в БД, 2 QSqlTableModel+QTableView и QSqlQuery+QTablEView подключенные к этой таблице.
Как лучше реализовать обновление информации во всех трех моделях при добавлении новой и/или изменении уже имеющейся в 1 или 2? |
|
|
![]() |
sidsukana |
![]()
Сообщение
#2
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Создать слоты в моделях, с которыми соединить сигнал, который вызывать при обновлении?
|
|
|
Tarigan |
![]()
Сообщение
#3
|
Студент ![]() Группа: Новичок Сообщений: 11 Регистрация: 20.4.2012 Пользователь №: 3336 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо, кэп
![]() Проблема у меня именно в реализации слотов с обновлением. Изначально делал submitAll(), но этот вариант никуда не годится. |
|
|
Tarigan |
![]()
Сообщение
#4
|
Студент ![]() Группа: Новичок Сообщений: 11 Регистрация: 20.4.2012 Пользователь №: 3336 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
К примеру, вот:
При добавлении записи в модель 1 срабатывает слот, подключенный к сигналу beforeInsert, в котором значение критерия для выборки в таблицах менятся с 1 на 2. Следовательно запись исчезает из модели 1 и должна появиться в модели 2 (см. 1 пост с описанием моделей). Из модели 1 она действительно исчезает, а в модели 2 появляется только при перезапуске программы. Подключенный к сигналу dataChanged слот ситуацию не спасает:
Что я делаю не так? |
|
|
Гость_Гость_* |
![]()
Сообщение
#5
|
Гости ![]() |
Какая СУБД? Возможно не происходит коммит в БД на 1 взгляд всё ок.
|
|
|
Tarigan |
![]()
Сообщение
#6
|
Студент ![]() Группа: Новичок Сообщений: 11 Регистрация: 20.4.2012 Пользователь №: 3336 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Firebird 2.5.
Коммит проходит, иначе как после перезапуска приложения данные появляются во второй модели. |
|
|
Гость_Гость_* |
![]()
Сообщение
#7
|
Гости ![]() |
dataChanged, и не должен вызываться при добавлении записи. beforeInsert - Before == Перед вставкой.
Попробуй ловить layoutChanged, и если не сработает update, делать reset. Хотя если данные в обоих таблица одна и та же 2 sql модели это уг вэй. Вполне достаточно повесить сверху прокси модель, и все проблемы с синхронизацией пропадут сами собой. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 19.2.2025, 1:14 |