Советы по Delphi


              

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


Как мне найти запись (осуществить '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;

[000247]



Содержание    Вперед