|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Неточный поиск без учета регистра!
Здравствуйте! Помогите пожалуйста с проблемой. Как Мне сделать поиск приблизительный поиск т.е. по не полному названию или содержания слова в середине текста И без учета регистра. При этом что бы можно было выбрать по какому полю искать. (НЕ НА SQL!!!)
ну примерно так выглядить будет: |
#2
|
|||
|
|||
Ты точнее механизм поиска опиши.
Т.е. шаблоны. Сравнение без учета регистра тебе помогут функции AnsiCompareText, AnsiUpper и AnsiLower. |
#3
|
|||
|
|||
Ну кароче вот каким образом нужно:
1. Выбираю по какому полю искать в Combobox'e 2. Пишу слово для поиска в Edit'e по неполному названиею например: у меня есть название - ООО "Аптека на Клестовке", что бы я ввел - Аптека и он уже нашел и так же без учета регистра т.е. "Аптека" и "апТЕка" это одно и то же. Вот что мне нужно! ах да и поиск по событию Edit1Change. |
#4
|
|||
|
|||
Ну так и делай.
Сравнение: Код:
If Pos(AnsiUpper(Edit1.Text),AnsiUpper(Query1.FieldByName(ComboBox1.Text).AsString)) > 0 Then ... // Нашли!!! |
#5
|
|||
|
|||
Неа не работает че жалуется на:
AnsiUpper(Edit1.Text) |
#6
|
|||
|
|||
А как жалеется?
Я ж имена компонентов с потолка брал - у тебя могут быть другие. Ну и, извини, функция точно называется AnsiUpperCase. |
#7
|
|||
|
|||
Цитата:
--- Трудно придумать что-то более гибкое и мощное, чем регулярные выражения. Здесь : http://regexpstudio.com/RU/TRegExpr/Help/About.html можно скачать Freeware Delphi-компонент (исходники), реализующий этот механизм. Неплохая штука ... |
#8
|
|||
|
|||
Цитата:
|
#9
|
|||
|
|||
Я ж тебе написал, что функция немного подругому называется. Змени AnsiUpper на AnsiUpperCase. В обоих местах. Ну и цикл сверху по записям не забудь
|
#10
|
|||
|
|||
да я всё сделал не работает все равно.
У меня до этого было вот так почти работало но не то: Код:
with Table1 do begin EditKey; FieldByName(ComboBox1.Text).AsString := Edit1.Text; GotoNearest; end; |
#11
|
||||
|
||||
D) Не, мне это нравится. Сначала идет категоричное (НЕ НА SQL!!!) а потом выдается кусок программы для поиска в БД. Вы как-то определитесь, что и где искать?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#12
|
|||
|
|||
Блин я че то видать так тогда не понимаю всё (((
Тогда так я использую компонент Table а не Query !! Извинюсь если я тут голову морочу всем, но я просто до ужаса Базу Данных ненавижу!! Ладно вообщем сделать поиск ну хоть как нибудь мне главное чтоб не на самом языке SQL т.е. SELECT FROM и остальная байда что бы не встречалась, я вот совсем не умею этим пользоваться, пожалуйста помогите как мне сделать поиск по тем критериям что я написал выше Последний раз редактировалось serpico, 21.04.2009 в 21:29. |
#13
|
||||
|
||||
Базу вы нелюбите потому-что похоже нехватает базовых знаний. Но это мое мнение.
Видите-ли какая штука, если бы вам надо было искать по значению или хотябы по части значения в начале, то да ваш первоначальный вариант подошел бы, но раз вам надо по вхождению искать, то придется отказаться от индексов и искать тупым перебором. Сделать это конечно можно, но объясните зачем заниматься мазохизмом если эта задача прекрасно решается элементарным запросом через Like ? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#14
|
|||
|
|||
а можно обычным поиском как нибудь через базу? без всяких примочек, я прочитал что можно через команду Locate такое возможно?
|
#15
|
||||
|
||||
Теже яйца только в профиль. Локейт будет искать с начала текста.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |