Russian Qt Forum
Февраль 05, 2012, 20:00
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
(Модератор:
Sergeich
) >
QSqlTreeModel всем миром...
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QSqlTreeModel всем миром... (Прочитано 6325 раз)
crossly
phpBB Житель матрицы
Offline
Сообщений: 1277
Re: QSqlTreeModel всем миром...
«
Ответ #15 :
Ноябрь 12, 2008, 14:02 »
товарищ Zmeishe !!... сделай доброе дело для сообщества... !!
(пиво прилогается...)
Записан
нет препятствий патриотам... нет преград энтузиастам...
Zmeishe
Частый гость
Offline
Сообщений: 200
Re: QSqlTreeModel всем миром...
«
Ответ #16 :
Ноябрь 12, 2008, 16:27 »
Излишков свободного времени у меня нет совсем, поэтому пинать бесполезно.
То, что у меня быстро получается, чего у других медленно получается - ну извините не моя вина.
Может у меня мозги на другой частоте работают ?
С сообществом поделюсь.
Предлагаю так же, как с многоуровневыми заголовками - делаю выжимку и выкладываю, а дальше вопрос-ответ, т.к. нет времени подробные комментарии расписывать в исходниках.
>> можно пива ему пообещать
- Барыня, водочку пить будешь?
- Ах, оставьте.
«
Последнее редактирование: Ноябрь 12, 2008, 16:39 от Zmeishe
»
Записан
Sergeich
Moderator
Супер активный житель
Offline
Сообщений: 786
Сферический писец в вакууме
Re: QSqlTreeModel всем миром...
«
Ответ #17 :
Ноябрь 16, 2008, 15:40 »
Я же уже вроде постил редактируемую tree-модель с кэшем, основанную на QAbstractItemModel, правда для одной таблицы. Хотя не помню, что за вариант выкладывал. Вобщем, см. аттач.
Записан
terlan
Программист
Offline
Сообщений: 501
matrix resident
Re: QSqlTreeModel всем миром...
«
Ответ #18 :
Январь 08, 2009, 22:47 »
спасибо за модель.
Только вот никак не пойму, какой должна быть структура таблицы? Пробовал сделать так:
Код:
"CREATE TABLE Object (id INTEGER PRIMARY KEY, parentName INTEGER, value1 INTEGER, value2 INTEGER)"
Базу конектит, таблицу видит, а данные не выводит. Подскажите, пожалуйста, что я мог не так сделать?
Записан
Qt 4.7.0
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3293
Re: QSqlTreeModel всем миром...
«
Ответ #19 :
Январь 08, 2009, 23:10 »
2 terlan, может внешний ключ надо на родителя?
Записан
Юра.
terlan
Программист
Offline
Сообщений: 501
matrix resident
Re: QSqlTreeModel всем миром...
«
Ответ #20 :
Январь 08, 2009, 23:26 »
Сделал так (добавил внешний ключ на родителя):
Цитировать
QSqlQuery query;
query.exec("CREATE TABLE Object (id INTEGER PRIMARY KEY, parentName INTEGER FOREIGN KEY, value1 INTEGER, value2 INTEGER)");
query.exec("insert into Object values(NULL,1,1,0)");
query.exec("insert into Object values(NULL,1,3,0)");
query.exec("insert into Object values(NULL,1,5,0)");
query.exec("insert into Object values(NULL,2,2,0)");
query.exec("insert into Object values(NULL,2,3,0)");
перестала заполняться таблица
Разве не могут внешние ключи для нескольких записей быть одинаковыми?
Записан
Qt 4.7.0
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3293
Re: QSqlTreeModel всем миром...
«
Ответ #21 :
Январь 09, 2009, 00:41 »
Могут, а вот NULL в первичном ключе это зачем?
Записан
Юра.
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3293
Re: QSqlTreeModel всем миром...
«
Ответ #22 :
Январь 09, 2009, 00:43 »
и зачем ты это мучаешь через Query, ведь о том пляска с моделью и была, чтобы в представлении ее использовать.
Создай таблицу, к модели прицепи вьюху, и через неё пользуй. Я так идею понимаю.
Записан
Юра.
terlan
Программист
Offline
Сообщений: 501
matrix resident
Re: QSqlTreeModel всем миром...
«
Ответ #23 :
Январь 09, 2009, 09:34 »
Цитата: lit-uriy от Январь 09, 2009, 00:41
Могут, а вот NULL в первичном ключе это зачем?
Прочитал такое на сайте SQLITE, раздел FAQ
Цитировать
If you declare a column of a table to be INTEGER PRIMARY KEY, then whenever you insert a NULL into that column of the table, the NULL is automatically converted into an integer which is one greater than the largest value of that column over all other rows in the table, or 1 if the table is empty
Цитата: lit-uriy от Январь 09, 2009, 00:43
и зачем ты это мучаешь через Query, ведь о том пляска с моделью и была, чтобы в представлении ее использовать.
Создай таблицу, к модели прицепи вьюху, и через неё пользуй. Я так идею понимаю.
я не мучаю через Query, просто написал небольшую программку, в которой создал базу с таблицей.
Саму SqlTreeModel не трогал, а просто подсоединяю к ней созданную базу.
Только не отображается таблица. У меня подозрение, что в таблице что-то не так, а вот что
Записан
Qt 4.7.0
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3293
Re: QSqlTreeModel всем миром...
«
Ответ #24 :
Январь 09, 2009, 11:55 »
Цитата: terlan от Январь 09, 2009, 09:34
Только не отображается таблица. У меня подозрение, что в таблице что-то не так, а вот что
дак посмотри ее с помощью %QTDIR%/demos/sqlbrowser, что там реально записалось
Записан
Юра.
terlan
Программист
Offline
Сообщений: 501
matrix resident
Re: QSqlTreeModel всем миром...
«
Ответ #25 :
Январь 09, 2009, 12:15 »
Цитата: lit-uriy от Январь 09, 2009, 11:55
Цитата: terlan от Январь 09, 2009, 09:34
Только не отображается таблица. У меня подозрение, что в таблице что-то не так, а вот что
дак посмотри ее с помощью %QTDIR%/demos/sqlbrowser, что там реально записалось
Подозрение касается структуры таблицы в базе - почему то модель (SqlTreemodel) не подгребает данные из созданной мною таблицы.
Ps А данные в таблицу вставляются, правда без FOREIGN KEY
-----------------------
хотя, если судить по коду sqltreemodel, то FOREIGN KEY в данной ситуации для родителя не нужен.
«
Последнее редактирование: Январь 09, 2009, 12:33 от terlan
»
Записан
Qt 4.7.0
terlan
Программист
Offline
Сообщений: 501
matrix resident
Re: QSqlTreeModel всем миром...
«
Ответ #26 :
Январь 09, 2009, 23:50 »
получилось:
ошибки было 2:
1) названия полей не соответствовали тем, что находятся в модели;
2) не была определена ниодна запись с родительским уровнем 0, то есть даже для первого элемента уже был указан родитель первого уровня.
Т.о.
1) создаем таблицу
Цитировать
CREATE TABLE Object (ObjID INTEGER PRIMARY KEY, ParentID INTEGER, ObjName TEXT, ObjType TEXT, Created TEXT);
2) создаем записи:
Цитировать
QSqlQuery query;
query.exec("insert into Object values(NULL,0,'Object1','Some type', 'yes')");
query.exec("insert into Object values(NULL,1,'Object2','Some type', 'yes')");
query.exec("insert into Object values(NULL,1,'Object3','Some type', 'yes')");
Зы: спасибо Константину за наводки
Записан
Qt 4.7.0
vpara
Гость
Re: QSqlTreeModel всем миром...
«
Ответ #27 :
Июль 29, 2010, 14:49 »
Цитата: Sergeich от Ноябрь 16, 2008, 15:40
Я же уже вроде постил редактируемую tree-модель с кэшем, основанную на QAbstractItemModel, правда для одной таблицы. Хотя не помню, что за вариант выкладывал. Вобщем, см. аттач.
По вашему примеру я сделал себе трее только с выбором из 2 таблиц (структура на рисунке) ...
А дальше возникли 2 вопроса:
1. Хочу сделать выборку еще из 2 таблиц (итого будут 4 ... структура в рисунке2) ... что посоветуете сделать в те же запросы или создавать новые ниже
2. Как установить иконки для итемов? (пока не разобрался .... но сильно не капал)
Записан
vpara
Гость
Re: QSqlTreeModel всем миром...
«
Ответ #28 :
Июль 29, 2010, 16:10 »
Цитата: Sergeich от Ноябрь 16, 2008, 15:40
Я же уже вроде постил редактируемую tree-модель с кэшем, основанную на QAbstractItemModel, правда для одной таблицы. Хотя не помню, что за вариант выкладывал. Вобщем, см. аттач.
Пытаюсь грубо (временно) дописать запрос ... по идее должен быть как то так:
query.exec( QString("SELECT %1 FROM %2, %3 WHERE %4 = %5 AND %6 = %7 "
"UNION ALL "
"SELECT product.product_id FROM product, product_category_xref "
"WHERE product.product_id = product_category_xref.product_id AND category_id = %5")
.arg(idName)
.arg(tableName)
.arg(tableRelated)
.arg(parentName)
.arg(id)
.arg(idName)
.arg(relatedId)
.arg(orderByField));
Но результат не радует ...
«
Последнее редактирование: Июль 29, 2010, 16:15 от vpara
»
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> Печать
=> Интернационализация, локализация
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
=> Архив
===> Программирование
=====> Python
===> Веб программирование
=====> PHP, PERL, CGI
Загружается...