Название: Помогите разобраться с фильтром в QSqlRelationalTableModel[Solved] Отправлено: paran87 от Ноябрь 07, 2010, 11:26 База данных Mysql. ОС - Ubuntu.
Таблица для вывода QTableView Добрый вам день коллеги. При написании простенькой программы возникла проблема работы с фильтром. Расмотрим кусок базы данных который нас интересует и для этого упрощу БД до двух таблиц. 1- справочник(id и фамилия), 2 - состоит из 3х полей - 1)id_phone(PK) 2)id_friends(FK) 3)Телефон(varchar). Обновлять 2ю таблицу приходиться часто и для этого я написал свой слотик в котором идет задие основных парметров. В конструкторе ничего кроме connectov не задавл. void phone::filing() { relationModel = new QSqlRelationalTableModel; relationModel->setEditStrategy(QSqlTableModel::OnManualSubmit); relationModel->setTable("phone"); (?) relationModel->setRelation(1, QSqlRelation("friends", "id_friends", "surname")); relationModel->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Фамилия")); relationModel->setHeaderData(2, Qt::Horizontal, QObject::trUtf8("Телефон")); relationModel->select(); //Тут просто делается выподающий список место второго id(FK). Стандартная штука. QSqlRelationalDelegate * delegate = new QSqlRelationalDelegate; ui->tableView->setModel(relationModel); ui->tableView->setItemDelegate(delegate); ui->tableView->setColumnHidden(0, true); } Слот не дописан и по этому ограничимся тем, что не получается. Я не буду брать текс который приходит в слот, а просто напишу запрос с жесткими параметрами. Я хочу что бы мой филтр нашел все фамилии в которых присутствует буква в Для фильтрации использую следующий слотик void phone::setFilterTel(const QString &text) { relationModel->setFilter("id_friends in " "(select id_friends from friends where surname like \"%В%\")"); } В данном случае, при выполнении фильтра получаю пусто! Если я коментирую строку которую обозначил (?), то запрос дает результаты, но место имен я получаю id(FK). Как мне сделать так, что бы работал и запрос и были имена вместа id? Название: Re: Помогите разобраться с фильтром в QSqlRelationalTableModel Отправлено: kowsan от Ноябрь 10, 2010, 14:33 qsortfilterproxymodel
Название: Re: Помогите разобраться с фильтром в QSqlRelationalTableModel Отправлено: paran87 от Ноябрь 10, 2010, 16:30 Ну пользоваться разными моделями не очень хочется! Потом фиг разберешься, что написал. Хотелось бы понят
1) Где я накасячил(если это конечно я) 2) Почему не работает и как допилить!!! Название: Re: Помогите разобраться с фильтром в QSqlRelationalTableModel Отправлено: asvil от Ноябрь 10, 2010, 17:35 Возможно в фильтре необходимо указывать имена таблиц. Например:
Код: phone.id_friends in (select friends.id_friends from friends where surname like \"%В%\") |