Russian Qt Forum
Мая 22, 2025, 18:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlRelationalTableModel и совместное использование БД  (Прочитано 4023 раз)
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]   Вверх
  Печать  
 
Перейти в:  


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