crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Горячий поиск
Stoptyssin
  опции профиля:
сообщение 2.3.2012, 23:02
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 20.1.2012
Пользователь №: 3145

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте все! Задача такая: надо найти в БД строку по фамилии котрая вводится в QLineEdit. Информация отображается в QTableView. Вот код:

void PatPoisk::on_lEdPat_textChanged(QString )
{

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

Если вместо ui->lEdPat->text() вводить фамилию, то все работает как часы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 3.3.2012, 0:08
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


э...
почему не
QString filter_query = ui->lEdPat->text();
?
Что-то вы нагородили со скобками и кавычками
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Stoptyssin
  опции профиля:
сообщение 3.3.2012, 8:22
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 20.1.2012
Пользователь №: 3145

Спасибо сказали: 0 раз(а)




Репутация:   0  


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


А в каком поле ему смотреть? Вы этого не указали - Pat_F - поэтому нужны кавычки, без них ошибка будет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 3.3.2012, 14:10
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


Мде...
"Pat_F = " + ui->lEdPat->text()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Stoptyssin
  опции профиля:
сообщение 3.3.2012, 15:29
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 20.1.2012
Пользователь №: 3145

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(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
  опции профиля:
сообщение 5.3.2012, 13:49
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 21.10.2010
Пользователь №: 2134

Спасибо сказали: 9 раз(а)




Репутация:   1  


Было такое у меня в каком-то проекте.
Вот такой конект в конструкторе:
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
  опции профиля:
сообщение 6.3.2012, 13:54
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 20.1.2012
Пользователь №: 3145

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо большое, буду пробовать. Сам уже подумал что через запрос легче будет )))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Stoptyssin
  опции профиля:
сообщение 14.3.2012, 20:57
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 20.1.2012
Пользователь №: 3145

Спасибо сказали: 0 раз(а)




Репутация:   0  


Сдела так, вроде работает

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();

}

}

правда коряво)))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.8.2022, 11:04