Название: QSqlRelationalTableModel и NULL Отправлено: Пантер от Июля 10, 2008, 12:57 Пытаюсь разобраться с QSqlRelationalTableModel и попал в тупик. В общем имеется 2 таблицы
1. FIRST_TABLE: ID - integer name - varchar 2. SECOND_TABLE ID - integer pole1 - integer (->FIRST_TABLE) Ставлю релейшн: model->setRelation(1, QSqlRelation("FIRST_TABLE", "id", "name")); Так вот если в pole1 хотя бы в одной записи нет значения (т.е. NULL), то данных никаких не показывает. Как нужно правильно делать? Название: Re: QSqlRelationalTableModel и NULL Отправлено: developer от Июля 14, 2008, 14:39 По моему в доке написано, что для вашего же блага, ми не будем отображать те строки у которых внешние ключи равны NULL. Столкнувшись с этой проблемой, я просто вставлял в нужние поля(в данном случае ети поля - внешные ключи) данные, перехватывая сигнал beforeInserted(...). Это не решыло всех моих проблем, но все таки помогло.
Название: Re: QSqlRelationalTableModel и NULL Отправлено: Mikhail от Июля 14, 2008, 15:51 Пытаюсь разобраться с QSqlRelationalTableModel и попал в тупик. В общем имеется 2 таблицы 1. FIRST_TABLE: ID - integer name - varchar 2. SECOND_TABLE ID - integer pole1 - integer (->FIRST_TABLE) Ставлю релейшн: model->setRelation(1, QSqlRelation("FIRST_TABLE", "id", "name")); Так вот если в pole1 хотя бы в одной записи нет значения (т.е. NULL), то данных никаких не показывает. Как нужно правильно делать? При создании второй таблицы для pole1 укажи NOT NULL например: CREATE TABLE SECOND_TABLE ( ID int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, pole1 int(11) NOT NULL ) ; Название: Re: QSqlRelationalTableModel и NULL Отправлено: Пантер от Июля 14, 2008, 17:11 При создании второй таблицы для pole1 укажи NOT NULL А как быть, если pole1 не всегда имеет значение?например: CREATE TABLE SECOND_TABLE ( ID int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, pole1 int(11) NOT NULL ) ; Название: Re: QSqlRelationalTableModel и NULL Отправлено: Mikhail от Июля 14, 2008, 20:28 При создании второй таблицы для pole1 укажи NOT NULL А как быть, если pole1 не всегда имеет значение?например: CREATE TABLE SECOND_TABLE ( ID int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, pole1 int(11) NOT NULL ) ; Ну, наверно это вопрос к построению архитектуры базы данных. Значит не продумано. Есть такая профессия - системный архитектор баз данных. Название: Re: QSqlRelationalTableModel и NULL Отправлено: Пантер от Июля 15, 2008, 07:09 Ладно, обрисую ситуацию. Есть таблица доходов, где такие поля:
ID номер по порядку NUMBER номер человека SUMMA сумма дохода OSNOVANIE основание, т.е. откуда взяли сведения о доходах. Релейшн создается по полю OSNOVANIE, но проблема в том, что основания может не быть в 50% случаев. Что тут можно изменить? Название: Re: QSqlRelationalTableModel и NULL Отправлено: ритт от Июля 15, 2008, 07:55 OSNOVANIE INT NOT NULL DEFAULT 0 :)
Название: Re: QSqlRelationalTableModel и NULL Отправлено: Пантер от Июля 15, 2008, 08:48 Птица не дает так сделать, ругается на внешний ключ. В общем или NULL или нормальное значение, но никак не 0.
Название: Re: QSqlRelationalTableModel и NULL Отправлено: Tonal от Июля 15, 2008, 08:54 А в табличку оснований включить основание с ID = 0 и текстам "Без основания". :)
Название: Re: QSqlRelationalTableModel и NULL Отправлено: Tonal от Июля 15, 2008, 08:56 Или наследоваться от QSqlRelationalTableModel и переписать selectStatement чтобы он не выкидывал эти записи. :)
|