2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Регистронезависимая фильтрация C++, IBExpert+FireBird
Сообщение20.11.2009, 13:30 
Всем доброго времени суток.
Вопрос такой.
Создаю приложение для работы с БД. Требуется осуществить фильтрацию по нескольким значениям. Причем сделать это так, чтобы проверка шла с первой буквы и была регистронезависима.

То есть, к примеру в поле "Производитель" есть 2 записи: AMD и Samsung.
И требуется, чтобы при вводе буквы "а" выводился AMD, а не Samsung (отфильтровывает так потому. что в слове "Samsung" есть маленькая буква "a", а в слове "AMD" ее нету).

Вот фрагмент кода:

Table_tov->Filter="NAME_TOV LIKE '%"+Edit1->Text.Trim()+"%";

 
 
 
 Re: Регистронезависимая фильтрация C++, IBExpert+FireBird
Сообщение20.11.2009, 13:52 
Аватара пользователя
Цитата:
"'%"+Edit1->Text.Trim()+"%'"
Так делать очень плохо, все развалится, если ввести в поле спецсимволы (http://xkcd.com/327/). Лучше использовать что-то вида DbParameter или CreateParameter. Хотя, могу ошибаться, не работал с Interbase.
Цитата:
...отфильтровывает так потому. что в слове "Samsung" есть маленькая буква "a", а в слове "AMD" ее нету
Зачем тогда регистронезависимость?
Если нужно искать только с первого символа, то первый знак % не нужен, LIKE 'a%' найдет AMD, LIKE '%A%' найдет обе строки.

 
 
 
 Re: Регистронезависимая фильтрация C++, IBExpert+FireBird
Сообщение20.11.2009, 17:34 
В том-то и дело, что я с этими параметрами не встречался даже...

А регистронезависимость нужна для того, чтобы ввели мы к примеру AMd и нашли
все AMD. Иначе при вводе AMd на данном этапе ничего не находит.

 
 
 
 Re: Регистронезависимая фильтрация C++, IBExpert+FireBird
Сообщение20.11.2009, 18:20 
Аватара пользователя
Striderr в сообщении #263881 писал(а):
В том-то и дело, что я с этими параметрами не встречался даже...

А регистронезависимость нужна для того, чтобы ввели мы к примеру AMd и нашли
все AMD. Иначе при вводе AMd на данном этапе ничего не находит.


Попробуйте UPPER(...) использовать.

 
 
 
 Re: Регистронезависимая фильтрация C++, IBExpert+FireBird
Сообщение20.11.2009, 19:28 
Спасибо большое.
Но тут уже получается, что необходимо IBQuery для этого использовать?
В принципе, если что, оставлю просто фильтрацию по первой букве...

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group