//先在窗体添加 ClientDataSet1 和两个 Button
{ 初始化测试数据 }
procedure TForm1.FormCreate(Sender: TObject);
begin
with ClientDataSet1 do begin
FieldDefs.Add('ID', ftInteger);
FieldDefs.Add('Name', ftString, 6);
FieldDefs.Add('Age', ftWord);
CreateDataSet;
AppendRecord([1, 'A', 11]);
AppendRecord([2, 'AB', 22]);
AppendRecord([3, 'ABC', 33]);
AppendRecord([4, 'ABCD', 44]);
AppendRecord([5, 'a', 55]);
AppendRecord([6, 'ab', 66]);
AppendRecord([7, 'abc', 77]);
AppendRecord([8, 'abcd', 88]);
end;
end;
{ FindFirst、FindNext、FindLast、FindPrior }
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.Filter := 'Name Like ''%c%''';
ClientDataSet1.FilterOptions := [foCaseInsensitive];
ClientDataSet1.Filtered := True;
if ClientDataSet1.FindFirst then ShowMessage(ClientDataSet1['Name']); { ABC }
if ClientDataSet1.FindNext then ShowMessage(ClientDataSet1['Name']); { ABCD }
if ClientDataSet1.FindLast then ShowMessage(ClientDataSet1['Name']); { abcd }
if ClientDataSet1.FindPrior then ShowMessage(ClientDataSet1['Name']); { abc }
ClientDataSet1.Filtered := False;
end;
{ 遍历过滤结果 }
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientDataSet1.Filter := 'Name Like ''%c%''';
ClientDataSet1.FilterOptions := [foCaseInsensitive];
ClientDataSet1.Filtered := True;
ClientDataSet1.FindFirst;
while ClientDataSet1.Found do
begin
ShowMessage(ClientDataSet1['Name']); { ABC / ABCD / abc / abcd}
ClientDataSet1.FindNext;
end;
ClientDataSet1.Filtered := False;
end;
转载于:https://my.oschina.net/hermer/blog/320397