Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Приблизительный поиск в QSqlTableModel


Автор: loneybibi 24.6.2011, 19:03
Добрый день! smile 

Есть БД MySql, в ней таблица типа "Имя" "Номер телефона".
Использую QSqlTableModel для получения данных.

Например есть 2 таких записи и много других:
Вася Пупкин | 050 123 456 11
Иван Петров | 050 123 666 77

Как используя функцию setFilter() сделать так что бы когда я в поле поиска вводил 123 то мне показало все записи в номерах которых есть эти цифры (Что то вроде LIKE в MySql)? Или как это сделать по другому?

Автор: borisbn 24.6.2011, 20:39
Код
model->setFilter( "PhoneNum LIKE %" + lineEdit->Text() + "%" );

чо так не работает ?

Автор: Greeneyed 25.6.2011, 10:10
Можно еще воспользоваться QSortFilterProxyModel. Подавать на нее QSqlTableModel, а результаты фильтрации уже выводить в таблицу.

Автор: loneybibi 26.6.2011, 11:58
Цитата(borisbn @ 24.6.2011,  19:39)
Код
model->setFilter( "PhoneNum LIKE %" + lineEdit->Text() + "%" );

чо так не работает ?

Я не знал что так можно, потому что нигде в документации не нашел ничего по этому, а методом тыка не очень хотелось подбирать как оно работать будет. 

И этот вариант почему то у меня выдает пустую таблицу.

Автор: Softaz 1.7.2011, 00:05
Цитата(loneybibi @  26.6.2011,  11:58 Найти цитируемый пост)
И этот вариант почему то у меня выдает пустую таблицу.

Думается мне, поле PhoneNum - varchar или подобное.
Тогда так: 
Код

model->setFilter( "PhoneNum LIKE '%" + lineEdit->Text() + "%'" );

т.е. окружить значение поля символами '
А  лучше QSqlQuery сделать параметризованный http://doc.qt.nokia.com/latest/qsqlquery.html


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)