Здравствуйте, гость ( Вход | Регистрация )
MoPDoBoPoT | Дата 18.12.2009, 20:42 |
Да, такая штука будет, если в таблице больше 255 записей. Чтобы транзакция не висела, можно попробовать вытащить все данные:
Но если данных будет много, то, сам понимаешь, все будет висеть в памяти попробуй существующий код, только для QSqlQuery использовать отдельное (самостоятельное) соединение (именованное, а не умалчиваемое). Кстати, да. Если обременяет тянуть все данные, то осуществляй свое редактирование в другом соединении. |
|
Kagami | Дата 18.12.2009, 20:30 |
Я пока так решил проблему в основной программе: Цитата QSqlTableModel *model = new QSqltableModel(); //настраиваем что надо model->select(); //и сразу же model->query().finish(); |
|
trdm | Дата 18.12.2009, 19:53 |
QTableView мешает транзакциям? Да, мешает. Где-то даже пост был, где чел анализировал взаимосвязь, не помню, хоть убейте нашел в аське: Цитата trdm (09:33:26 15/04/2008) а, понятно. А сообщение по аське не были видны из-за пыли из под копыт. Я тут тоже на QT подсел, щас с моделями разбираюсь. Кстати, под какой лицензией система? На http://www.crossplatform.ru/ в разделе QT/Бизнес не появится случаем? orefkov (09:36:54 15/04/2008) Об этом даже не задумывались еще. А вот для работы с скл - модели, как показал опыт, мало пригодны. Такой красоты, как ТабличноеПоле (по принципу работы) нетути. При скроллинге таблиц все данные постепенно подтягиваются в клиента. А с SQLite еще хуже - пока открыт select - нельзя сделать коммит транзакции, а в гриде постоянно открыт селект, пока не вычерпаешь его до последней строки. orefkov (09:38:21 15/04/2008) Пришлось писать свою модельку для отображения строк продажи. orefkov (09:38:21 15/04/2008) Пришлось писать свою модельку для отображения строк продажи. trdm (09:50:39 15/04/2008) Модельку или поле? orefkov (09:51:24 15/04/2008) Модельку конечно, поле оно и в африке поле. trdm (09:51:54 15/04/2008) За сведения на счет селекта спасибо, буду знать. orefkov (09:53:44 15/04/2008) Так что при записи в базу sqlite всегда приходится следить, что бы перед коммитом все селекты были закрыты, или выбраны до конца (в этом случае они автоматом закрываются) trdm (09:53:54 15/04/2008) А наследовались от абстрактитеммодел или врукопашную модельку делали? orefkov (09:54:19 15/04/2008) class SCurrentSale : public QAbstractTableModel trdm (09:57:30 15/04/2008) да, любопытно было бы посмотреть. Мне самому предстоит пару табличек обслужить. Правда это не рабочий проект. orefkov (10:01:10 15/04/2008) Ну я делал на таком упрощенном донельзя принципе ТабличногоПоля (это подошло для моего частного случая) - в модели подготавливал параметризированный запрос, получающий ОДНУ строку таблицы, и храню ключ считанной строки (в моем случае он совпадает с номером строки в гриде). Когда грид просит данные, смотрю, если номер строки не совпадает с ключом, выполняю запрос, запоминаю номер строки. После этого возвращаю данные для нужной колонки. может чего намекнет. |
|
Litkevich Yuriy | Дата 18.12.2009, 18:52 |
попробуй существующий код, только для QSqlQuery использовать отдельное (самостоятельное) соединение (именованное, а не умалчиваемое). Возможно, что в Qt одно соединение - одна транзакция |
|
Kagami | Дата 18.12.2009, 17:34 |
Есть база данных. Она отображается в QTableView с помощью QSqlTableModel и иногда редактируется мной с помощью QSqlQuery. При этом я использую транзакции. И заметил что при вызове QSqlDatabase::commit(), ничего не происходит, база данных сообщает что есть активные запросы. Может ли это влиять модель, которая внутри тоже использует QSqlQuery? Тестовый пример попробую сделать чуть позже. | |
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 17:38 |