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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlTableModel и QSqlQuery не видят некоторые строки выборки  (Прочитано 3622 раз)
utking
Гость
« : Декабрь 14, 2012, 03:10 »

Добрый день!
Есть проект, где в БД SQLite пишутся данные по работе с клиентами. Каждая запись - это наряд на работу. Каждый наряд имеет комментарии менеджера, которые могут пополняться, и потому комментарии вынесены в отдельную таблицу, которая связана с главной таблицей нарядов номером самого наряда.

При попытке отобразить записи в QTableView через модель я вижу что строки отображаются не все. Теряются строки с добавленными комментариями. Проверил простым запросом QSqlQuery количество возвращаемых строк - выдает меньше, чем есть на самом деле. SQLiteBrowser показывает все строки и в созданной в БД вьюшке и по запросу, который организует эту вьюшку.

Простой код, для проверки
Код:
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("./watcher.db");
    db.open();
    if (!db.isOpen())
        qDebug() << db.lastError().text();
    QSqlQuery query(db);
    query.prepare("select count(*) from (SELECT itms.id, itms.ord_number, itms.client, itms.ord_date, itms.sent_date, itms.done_date, ((strftime('%s', done_date)-strftime('%s', sent_date))/3600/24) dates_diff, c.comment, itms.item_date, itms.manager FROM CURRENT_ITEMS itms, COMMENTS c WHERE c.ord_number = itms.ord_number GROUP BY itms.ord_number HAVING item_date = max(item_date) and comment_date = max(comment_date))");
    query.exec();
    if (query.next())
        qDebug() << query.record().value(0);

Win7 32bit. Qt 4.8.0. QtCreator 2.4.1
« Последнее редактирование: Декабрь 14, 2012, 03:12 от utking » Записан
Figaro
Гость
« Ответ #1 : Декабрь 14, 2012, 07:26 »

Базу в аттаче вижу, теперь минимально компилируемый проект в студию..
Записан
utking
Гость
« Ответ #2 : Декабрь 14, 2012, 07:33 »

В аттаче

Интересно, что проблема не проявляется под Debian 6 с Qt 4.6.3
« Последнее редактирование: Декабрь 14, 2012, 07:54 от utking » Записан
utking
Гость
« Ответ #3 : Декабрь 14, 2012, 08:33 »

Тему можно закрыть. Заработало без проблем на Qt 4.6.4. Видимо в 4.8.0 есть баг
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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