Поочередный поиск заданного значенияDelphi , Базы данных , ПоискПоочередный поиск заданного значенияАвтор: Панасюк Артем Это поочередный поиск заданого значения (начало, середина, один символ и тд.), при чем регистр не имеет значения. Поиск по больших выборках даных будет несколько долговат, но наглядный. procedure SearchValue(AQuery: TADOQuery; AField, AValue: string); var i: integer; NoRec: integer; begin with AQuery do begin First; for i := 0 to RecordCount - 1 do begin if (not Eof) and (Pos(AnsiLowerCase(AValue), AnsiLowerCase(FieldByName(AField).AsString)) <> 0) then begin if MessageBox(HWND_DESKTOP, PChar('Заданое значение найдено!' + #10#13+ ' Продолжать поиск'), 'Поиск', MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON1) = IDYES then begin NoRec := RecNo; Next; end else Break; end else Next; end; MoveBy(NoRec - RecordCount); MessageBox(HWND_DESKTOP, PChar('Поиск завершен!'), 'Поиск', MB_OK + MB_ICONINFORMATION + MB_DEFBUTTON1); end; end; // А это пример того, как я вызывал // процедуру поиска через TActionList procedure TfmMain.acSearchExecute(Sender: TObject); var S: string; begin S := ''; S := InputBox('Поиск', 'Введите значение для поиска:', S); if S <> '' then SearchValue(((Screen.ActiveControl as TDBGridEh).DataSource.DataSet as TADOQuery), (Screen.ActiveControl as TDBGridEh).SelectedField.FieldName, S); end; procedure TfmMain.acSearchUpdate(Sender: TObject); begin (Sender as TAction).Enabled := Assigned(Screen.ActiveControl) and (Screen.ActiveControl is TDBGridEh); end; Here is the translation of the content into Russian: Это код Delphi для поиска значения в таблице базы данных. Процедура Процедура перебирает все записи в запросе, проверяя, существует ли это значение в указанном поле. Если она находит совпадение, то спрашивает пользователя продолжать поиск или остановить. Если пользователь выбирает остановку, то процедура перемещается к предыдущей записи и отображает сообщение о том, что поиск был завершен. Вот некоторые предложения для улучшения этого кода:
Вот обновленная версия кода с некоторыми из этих предложений реализованными:
Обратите внимание, что я удалил переменную В статье описан алгоритм поочередного поиска заданного значения в больших выборках данных, реализованный с помощью процедуры SearchValue на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |