Поиск по неиндексированному полю в TTable
{Следущая функция может быть добавлена в Ваш модуль и названа,
например:
Locate(Table1, Table1LName, 'Строка поиска');
{Table1 это ваш компонент таблицы, Table1LName это имя TField в котором будет производиться поиск и 'Строка поиска' это то, что надо найти.}
{Locate будет искать SValue в неиндексированной таблице}
function Locate(const oTable: TTable; const oField: TField;
const sValue: string): Boolean;
var
bmPos: TBookMark;
bFound: Boolean;
begin
Locate := False;
bFound := False;
if not oTable.Active then Exit;
if oTable.FieldDefs.IndexOf(oField.FieldName) < 0 then Exit;
bmPos := oTable.GetBookMark;
with oTable do
begin
DisableControls;
First;
while not EOF do
if oField.AsString = sValue then
begin
Locate := True;
bFound := True;
Break;
end
else
Next;
end;
if (not bFound) then
oTable.GotoBookMark(bmPos);
oTable.FreeBookMark(bmPos);
oTable.EnableControls;
end;
Locate(Table1, Table1LName, 'Строка поиска');
{Table1 это ваш компонент таблицы, Table1LName это имя TField в котором будет производиться поиск и 'Строка поиска' это то, что надо найти.}
{Locate будет искать SValue в неиндексированной таблице}
function Locate(const oTable: TTable; const oField: TField;
const sValue: string): Boolean;
var
bmPos: TBookMark;
bFound: Boolean;
begin
Locate := False;
bFound := False;
if not oTable.Active then Exit;
if oTable.FieldDefs.IndexOf(oField.FieldName) < 0 then Exit;
bmPos := oTable.GetBookMark;
with oTable do
begin
DisableControls;
First;
while not EOF do
if oField.AsString = sValue then
begin
Locate := True;
bFound := True;
Break;
end
else
Next;
end;
if (not bFound) then
oTable.GotoBookMark(bmPos);
oTable.FreeBookMark(bmPos);
oTable.EnableControls;
end;
