Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в базе! [D6, IB6.x]


Youri ©   (2002-11-06 11:56:00) 

Господа! Очень нужна помощь.
Не знаю как осуществить частичный поиск методом Locate. Нужно искать подстроку в некотором поле. Но не с начала, а например с 5 символа. Например:
В строке "Нужна помощь" необходимо найти строку "жна помо".
Как сделать?
Спасибо!


Wolf226   (2002-11-06 14:18:00) [1]

Sorry. Ошибся.
Кстати. На счет вариантов 1 (Alexandr) и 2 (Max Zyuzin)
При малом объеме наверно лучше вариант 1, при большом - 2.
Но надо проэкспериментировать.


Max Zyuzin   (2002-11-06 13:44:00) [2]

>Wolf226 © (06.11.02 13:43)
Это не поможет. Locate ищет троку с начала.


Wolf226   (2002-11-06 13:43:00) [3]

IBTable1.locate("fieldname","жна пом",[loPartialKey])


Alexandr   (2002-11-06 12:37:00) [4]

самое главное, не использовать IBTable.
В нем все тормоза!


Max Zyuzin   (2002-11-06 12:27:00) [5]

Какая разница? Добавте еще один компонент IBQuery для выполнения запроса. А Locate делайте уже в вашей Table.


Youri   (2002-11-06 12:23:00) [6]

Alexandr!
Использую ваш метод с циклом. Но поиск в таком случае происходит очень медленно!
Есть ли какие-то другие способы?
Max Zyuzin!
Что делать, если используется не IBQuerry, а IBTable?


Max Zyuzin   (2002-11-06 12:19:00) [7]

Будет или не будет зависит много от чего... А вопрос конечно интересный :) пусть автор ветки попробует и скажет


Alexandr   (2002-11-06 12:05:00) [8]

но будет ли быстрее при этом...


Max Zyuzin   (2002-11-06 12:01:00) [9]

Можно сделать хитро :)
Сделать в отдельном IBQuery поиск какой надо типа
Select * from mytab where mifield like "%жна помо%"
И локейтить по отображаемуому датасету уже зная строку целиком (лучше по ключю)


Alexandr   (2002-11-06 11:58:00) [10]

while not(eof) do begin
if pos(...)>0 then break;
next;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо