Поиск записи с помощью TQuery

Советы » Поиск, сортировка и фильтр » Поиск записи с помощью TQuery

Как мне найти запись (осуществить 'Find') в TQuery?

Я привел ниже код, который я использую в своей работе, правда, в нем еще необходимо организовать обработку исключительных ситуаций, но это дело времени. Когда пользователь нажимает кнопку "Найти", обработчик события OnClick вызывает процедуру SearchName.

Объявляем: FindSearch : Boolean и инициализируем значением True.

function

LookForString(target, source: string

): boolean; { в случае игнорирования перед вызовом pos необходимо преобразовать source и target в верхний регистр } begin

LookForString := pos(target, source); end

; procedure

SearchName(searchtype: string

; stringtofind: string

); var

OldCursor: TCursor; CurrentPos: TBookmark; found: boolean; begin

if

Form1.Query1.State = dsEdit then

Form1.Query1.Post; if

StringToFind = '' then

exit; OldCursor := Screen.Cursor; Screen.Cursor := crHourGlass; with

Form1 do

begin

CurrentPos := Query1.GetBookmark; Query1.DisableControls; found := false

; if

searchtype <> 'prev' then

{ первый или следующий } begin

if

searchtype = 'first' then

Query1.First else

if

not

Query1.EOF then

Query1.Next; while

(not

Query1.EOF) and

(not

found) do

begin

if

LookForString(StringToFind, MemberName) <> 0 then

found := true

; if

not

found then

Query1.Next; end

; end

else

begin

{ prev } if

not

Query1.BOF then

Query1.Prior; while

(not

Query1.BOF) and

(not

found) do

begin

if

LookForString(StringToFind, MemberName) <> 0 then

found := true

; if

not

found then

Query1.Prior; end

; end

; Screen.Cursor := OldCursor; if

found then

begin

FindSearch := false

; ChangeFindCaption; UpdateStatusLabel; end

else

begin

MessageDlg('Больше ничего не найдено.', mtInformation, [mbOK], 0); Query1.GotoBookmark(CurrentPos); end

; Query1.EnableControls; Query1.FreeBookmark(CurrentPos); end

; { конец работы с Form1 } end

; procedure

TForm1.FindButtonClick(Sender: TObject); begin

if

FindSearch then

SearchName('first', Page0Edit.Text) else

SearchName('next', Page0Edit.Text); end

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com