Russian Qt Forum

Qt => Базы данных => Тема начата: asrael от Январь 31, 2011, 18:23



Название: QSqlRelationalTableModel и совместное использование БД
Отправлено: asrael от Январь 31, 2011, 18:23
проблема с сетевым использованием БД.
есть таблица, в которой один из столбцов заменяется через setRelation из другой таблицы. только, беда в том, что при этом БД блокируется и нельзя добавлять/редактировать данные
Код:
QSqlError(5, "Unable to fetch row", "database is locked")
если убрать relation, всё прекрасно работает.. в документации ничего такого не нашел.. кто сталкивался?
з.ы. SQLite, Qt 4.6.3


Название: Re: QSqlRelationalTableModel и совместное использование БД
Отправлено: asrael от Февраль 05, 2011, 23:32
блин.. может, хоть кто-нить знает, чем можно заменить этот QSqlRelationalTableModel? а то просто беда с ним какая-то..(


Название: Re: QSqlRelationalTableModel и совместное использование БД
Отправлено: SimpleSunny от Февраль 06, 2011, 11:38
Убедитесь что проблема не в вашем коде.
Посмотрите исходники.
Найдите проблему.
Напишите свою RelationTableModel.


Название: Re: QSqlRelationalTableModel и совместное использование БД
Отправлено: asrael от Февраль 06, 2011, 13:36
я уже неделю наверное копаю свой код.. без relation всё отлично работает, можно хоть сколько копий программы запускать, sqlite не ругается.. как только включаю обратно - хоть тресни..(
вот код:
Код:
    patients = new QSqlRelationalTableModel;
    patients->setTable("patients");
    patients->select();
    while(patients->canFetchMore())
            patients->fetchMore();
    patients->setRelation(10, QSqlRelation("adress", "id", "adress"));//если эту строку убрать, всё будет работать

    tvBase->setModel(patients);
    tvBase->resizeColumnsToContents();
    tvBase->hideColumn(0);
ну, и собственно, две таблицы между которыми ставится соответствие:
Код:
TABLE patients
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  fam STRING, 
  nam STRING,
  oth STRING,
  sex STRING,
  bd DATE,
  kat STRING,
  lgota STRING,
  work  STRING,
  death STRING,
  adr INTEGER,
  snils STRING

TABLE adress
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  adress STRING


Название: Re: QSqlRelationalTableModel и совместное использование БД
Отправлено: RVZ от Март 07, 2011, 12:52
А может строчки местами поменять...
Код
C++ (Qt)
   patients = new QSqlRelationalTableModel;
   patients->setTable("patients");
   patients->setRelation(10, QSqlRelation("adress", "id", "adress"));
 
   patients->select();
   while(patients->canFetchMore()) patients->fetchMore();
   .....
 


Название: Re: QSqlRelationalTableModel и совместное использование БД
Отправлено: asrael от Май 18, 2011, 22:10
неа.. та же самая фигня..((