Russian Qt Forum
Ноябрь 24, 2024, 07:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlRelationalTableModel и совместное использование БД  (Прочитано 3934 раз)
asrael
Гость
« : Январь 31, 2011, 18:23 »

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

блин.. может, хоть кто-нить знает, чем можно заменить этот QSqlRelationalTableModel? а то просто беда с ним какая-то..(
Записан
SimpleSunny
Гость
« Ответ #2 : Февраль 06, 2011, 11:38 »

Убедитесь что проблема не в вашем коде.
Посмотрите исходники.
Найдите проблему.
Напишите свою RelationTableModel.
Записан
asrael
Гость
« Ответ #3 : Февраль 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
Записан
RVZ
Гость
« Ответ #4 : Март 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();
   .....
 
Записан
asrael
Гость
« Ответ #5 : Май 18, 2011, 22:10 »

неа.. та же самая фигня..((
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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