Russian Qt Forum
Июнь 01, 2024, 04:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlQueryModel + QTableView + insert into | UPDATe обновление данных.  (Прочитано 8038 раз)
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« : Октябрь 25, 2011, 20:59 »

Если пишу в табличку (insert into | UPDATe), которая используется через QSqlQueryModel присобаченый к QTableView
мне надо этой модели сделать рефрешь?
или можно как-то иначе сделать?
или там таймеры есть, которые через некоторое время подхватят изменения?
может их задать (таймеры)?
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Октябрь 25, 2011, 21:32 »

Нужно делать рефрешь вручную.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #2 : Октябрь 25, 2011, 23:49 »

Нужно делать рефрешь вручную.
понял, не проблема.
у меня в 1С и таймеры с заданием времени и вручную можно обновить.
думаю всетаки и таймер прикрутить для варианта работы по сети.
ПС. в 1С вьюву можно скомандовать
гИсточникДанных.Обновить(ТекСтрока);  
и вьюв спозиционируется на объекте в ТекСтрока.
если возможность делать такое с QSqlQueryModel?
« Последнее редактирование: Октябрь 25, 2011, 23:52 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
maint
Гость
« Ответ #3 : Октябрь 26, 2011, 04:52 »

нельзя. Только целиком. Как и в 1С, внутри. Если не прекратить думать категориями 1с-быдлокодера , в программировании делать нечего.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Октябрь 26, 2011, 08:32 »

panAlexey, есть нотификаторы, но не во всех БД. Я их с постгресом юзал - удобная штука.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #5 : Октябрь 26, 2011, 11:28 »

нельзя. Только целиком. Как и в 1С, внутри. Если не прекратить думать категориями 1с-быдлокодера , в программировании делать нечего.
Не надо дутого высокомерия.
Та концепция позиционирования весьма удобна, пара запросов с лимитами "вверх" и "вниз" относительно ключевого элемента сортировкой и уже понятно сколько данных надо отдать вьюву для отображения в нужной позиции и установки курсора.
Только нужно плотное взаимодействие вьюва и запросов.
Это очень часто применяется на практике. Если этой возможности нет, мне прийдется её манипулировать.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #6 : Октябрь 26, 2011, 11:53 »

panAlexey, есть нотификаторы, но не во всех БД. Я их с постгресом юзал - удобная штука.
Я не про то спрашивал.
У меня вьювы и формы элементов строются из единой фабрики, так что скомандовать "обновись" при записи элемента для меня не проблема.
Проблема в следующем.
Если записывается новый элемент, то я хочу, чтобы в том QTableView из которого пошло создание этот элемент стал текущим.
Найти и проинформировать этот вьюв не проблема, нотификатор не требуется.
Проблема в позиционировании. У этого вьюва есть запрос.
Соответственно надо сделать рефрешь модели, что-бы новый элемент подхватился запросом.
Потом думаю перебрать запрос модели, в запросе в определенном поле сидит ключ этого элемента.
Надо найти порядковую запись строки запроса в котором сидит этот ключ, и построить QModelIndex по этим данным, а вьюву дать команду на позиционирование на этом индексе.
Вот такой миниплан. Получится? Или будут палки в колеса?
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Октябрь 26, 2011, 11:59 »

Я в свое время тупо сохранял ID, рефрешал и делал перебор, пока не найду нужную запись.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #8 : Октябрь 26, 2011, 12:04 »

Я в свое время тупо сохранял ID, рефрешал и делал перебор, пока не найду нужную запись.
Ты имеешь ввиду что ID - это ключ который однозначно характеризует документ/элемент в таблице?
А перебор чего? запроса или индексов модели?
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Октябрь 26, 2011, 12:14 »

Ты имеешь ввиду что ID - это ключ который однозначно характеризует документ/элемент в таблице?
Да.
А перебор чего? запроса или индексов модели?
Индексов модели.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #10 : Октябрь 26, 2011, 12:51 »

Ты имеешь ввиду что ID - это ключ который однозначно характеризует документ/элемент в таблице?
Да.
А перебор чего? запроса или индексов модели?
Индексов модели.
Можно пример перебора индексов?
ПС. Но это на вечер. ))
Сейчас быдлокодинг на 1С ))))
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Странник
Гость
« Ответ #11 : Октябрь 26, 2011, 13:08 »

Можно пример перебора индексов?
ПС. Но это на вечер. ))
Сейчас быдлокодинг на 1С ))))
у меня поиск строки по значению data в столбце column реализован так:
Код:
QModelIndexList matchIndexes = model->match(model->index(0, column), Qt::DisplayRole, data, 1, Qt::MatchExactly);

if (!matchIndexes.isEmpty()) return matchIndexes.at(0).row();
else return -1;
но корректно работать будет только если не canFetchMore = ) свой поиск с fetch'ами все руки не доходят написать.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #12 : Октябрь 26, 2011, 13:15 »

Можно пример перебора индексов?
ПС. Но это на вечер. ))
Сейчас быдлокодинг на 1С ))))
у меня поиск строки по значению data в столбце column реализован так:
Код:
QModelIndexList matchIndexes = model->match(model->index(0, column), Qt::DisplayRole, data, 1, Qt::MatchExactly);

if (!matchIndexes.isEmpty()) return matchIndexes.at(0).row();
else return -1;
но корректно работать будет только если не canFetchMore = ) свой поиск с fetch'ами все руки не доходят написать.
Сенк. Я потихонечку только начинаю вникать в Qt-ю специфику модель-вид+SQL.
Плохо, что слабовато с инглишем для ассистанта.
Не особо плохо, но зачастую нехватет ))
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #13 : Октябрь 29, 2011, 20:37 »

Можно пример перебора индексов?
ПС. Но это на вечер. ))
Сейчас быдлокодинг на 1С ))))
у меня поиск строки по значению data в столбце column реализован так:
Код:
QModelIndexList matchIndexes = model->match(model->index(0, column), Qt::DisplayRole, data, 1, Qt::MatchExactly);

if (!matchIndexes.isEmpty()) return matchIndexes.at(0).row();
else return -1;
но корректно работать будет только если не canFetchMore = ) свой поиск с fetch'ами все руки не доходят написать.

таким поиском какая-то фигня получается...
в самой функции match смотрет сравнивается 2 QVariant со значениями v 1 (qlonglong) и value 10 (int) и конструкция
if (v==value) дает true O_o.......
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 19.