Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Горячий поиск
Форум на CrossPlatform.RU > Разработка > SQL. Базы данных.
Stoptyssin
Здравствуйте все! Задача такая: надо найти в БД строку по фамилии котрая вводится в QLineEdit. Информация отображается в QTableView. Вот код:

void PatPoisk::on_lEdPat_textChanged(QString )
{

QString filter_query = ("Pat_F = ui->lEdPat->text()");
model->setFilter(filter_query);
}

Если вместо ui->lEdPat->text() вводить фамилию, то все работает как часы.
RazrFalcon
э...
почему не
QString filter_query = ui->lEdPat->text();
?
Что-то вы нагородили со скобками и кавычками
Stoptyssin
Цитата(RazrFalcon @ 3.3.2012, 4:08) *
э...
почему не
QString filter_query = ui->lEdPat->text();
?
Что-то вы нагородили со скобками и кавычками


А в каком поле ему смотреть? Вы этого не указали - Pat_F - поэтому нужны кавычки, без них ошибка будет
MoPDoBoPoT
Мде...
"Pat_F = " + ui->lEdPat->text()
Stoptyssin
Цитата(MoPDoBoPoT @ 3.3.2012, 18:10) *
Мде...
"Pat_F = " + ui->lEdPat->text()


Попробовал. Не работает, не находит в БД.

Цитата(Stoptyssin @ 3.3.2012, 19:24) *
Цитата(MoPDoBoPoT @ 3.3.2012, 18:10) *
Мде...
"Pat_F = " + ui->lEdPat->text()


Попробовал. Не работает, не находит в БД.


я дебил! Все заработало, сори! Теперь проблема в другом: при повторном введении не происходит поиска. Т.е. если стереть в lEdPat, то не показывает полный список и если ввести другой Pat_Id - не происходит поиска по базе. Только если закрыть форму и открыть снова, тогда все норм.
vankleef
Было такое у меня в каком-то проекте.
Вот такой конект в конструкторе:
connect(widget.criterylineEdit,SIGNAL(textEdited(const QString&)),this,SLOT(search(const QString&)));

И вот реализация слота поиска:
void resultForm::search(const QString& text){
    int index=widget.comboBox->currentIndex();
    switch(index){
        case 0:
            model->setQuery("SELECT fio,sernum,klass,discip,data,quA,quB FROM result WHERE fio LIKE '%"+text+"%'");
            widget.tableView->setModel(model);
            break;
        case 1:
            model->setQuery("SELECT fio,sernum,klass,discip,data,quA,quB FROM result WHERE klass LIKE '%"+text+"%'");
            widget.tableView->setModel(model);
            break;
        case 2:
            model->setQuery("SELECT fio,sernum,klass,discip,data,quA,quB FROM result WHERE sernum LIKE '%"+text+"%'");
            widget.tableView->setModel(model);
            break;
    }
    widget.tableView->resizeColumnsToContents();
    widget.tableView->resizeRowsToContents();
}


На int index=widget.comboBox->currentIndex(); не обращай внимания, это комбобокс, в котором указывается критерий, по которому надо искать (фамилия, серия/номер паспорта и тд)
Stoptyssin
Спасибо большое, буду пробовать. Сам уже подумал что через запрос легче будет )))
Stoptyssin
Сдела так, вроде работает

void PatPoisk::on_lEdPat_textChanged(QString )
{
if(ui->lEdPat->text().size() > 0) {
QString filter_query = ("Pat_F like '" + ui->lEdPat->text()+"%'");
model->setFilter(filter_query);

ui->tVPat->resizeColumnsToContents();
ui->tVPat->resizeRowsToContents();
}
if(ui->lEdPat->text().size() == 0)
{
model->setTable("Patient");
model->select();

model->setHeaderData(1, Qt::Horizontal, tr("Фамилия"));
model->setHeaderData(2, Qt::Horizontal, tr("Имя"));
model->setHeaderData(3, Qt::Horizontal, tr("Отчество"));

ui->tVPat->setModel(model);
ui->tVPat->setColumnHidden(0, true);
ui->tVPat->show();

}

}

правда коряво)))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.