ПРОГРАММИРОВАНИЕ! СОЗДАНИЕ САЙТОВ И ИХ ОПТИМИЗАЦИЯ
Главная » Статьи » Программирование » Delphi |
Быстрый поиск в базах данных Я представляю на Ваш суд утилиту быстрого поиска по базе данных. Данная технология производит поиск по полям, преобразуя их значения в строки (все значения преобразуются в верхний регистр, включая действительные числа). Данное решение может быть не самым быстрым, однако на поверку оно оказывается быстрее остальных, обнаруженных мною в Интернете (может вам повезет больше). Более того, представьте, что действительное значение какого-либо поля равно 4.509375354, а значение поиска равно 7, в этом случае утилита засчитает "попадание". Утилита удобна также тем, что она за один проход производит поиск более, чем в одном поле. Это удобно, если у Вас имеются, к примеру, два поля с адресами. Это моя первая "серьезная" разработка, так как первое, с чем я столкнулся, изучая Delphi, стала необходимость включения процедуры поиска в любое приложение, работающее с базой данных. А так как поиск - вещь тоже сугубо специфическая, как и любое приложение, то мне пришлось побороть свой страх перед "крутым программированием" и попробовать написать свой поисковый механизм, удовлетворивший меня (и, надеюсь, других) своей скоростью и возможностью "мульти"-поиска по нескольким полям. Я надеюсь, что он поможет тем программистам, кто часто сталкивается с подобными задачами. Технология довольно легка для понимания, но если у Вас возникли какие-либо вопросы, пошлите мне письмо электронной почтой, я буду рад Вам помочь. Посмотрев код, можно легко узнать поддерживаемые типы полей (добавить новые не составит проблем). interface uses DB, DBTables, SysUtils; function GrabMemoFieldAsPChar(TheField : TMemoField): PChar; SearchBackward : Boolean; Beginning : Boolean; SFor : String): Boolean; if FindIt(NotesSearchT, implementation function GrabMemoFieldAsPChar(TheField : TMemoField): PChar; begin function DoFindIn(TheField : TField; SFor : String): Boolean; PChForMemo : PChar; ftString : function FindIt(TheTable : TDataSet; TheFields : array of integer; SearchBackward : Boolean; Beginning : Boolean; SFor : String): Boolean; i, HighTheFields, LowTheFields : integer; begin TheTable.GotoBookmark(BM); end; end. | |
Просмотров: 489 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |