crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QTableView мешает транзакциям?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
MoPDoBoPoT Дата 18.12.2009, 20:42
  Да, такая штука будет, если в таблице больше 255 записей. Чтобы транзакция не висела, можно попробовать вытащить все данные:
while (sqlModel->canFetchMore())
     sqlModel->fetchMore();

Но если данных будет много, то, сам понимаешь, все будет висеть в памяти :)

Цитата(Litkevich Yuriy @ 18.12.2009, 18:52) *
попробуй существующий код, только для QSqlQuery использовать отдельное (самостоятельное) соединение (именованное, а не умалчиваемое).

Кстати, да. Если обременяет тянуть все данные, то осуществляй свое редактирование в другом соединении.
Kagami Дата 18.12.2009, 20:30
  Я пока так решил проблему в основной программе:
Цитата
QSqlTableModel *model = new QSqltableModel();
//настраиваем что надо
model->select();
//и сразу же
model->query().finish();
trdm Дата 18.12.2009, 19:53
 
Цитата(Kagami @ 18.12.2009, 17:34) *
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? Тестовый пример попробую сделать чуть позже.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 17:38