您好我今天运行此代码,但问题是当字段上有相同的数据时它不会循环但只显示它过滤的第一个数据.这是代码
ADOTable1.First;
if ADOTable1.Locate('Last', Edit1.Text, []) then
begin
Label1.Caption := ADOTable1.FieldByName('Last').AsString;
Label2.Caption := ADOTable1.FieldByName('First').AsString;
Label3.Caption := ADOTable1.FieldByName('address').AsString;
Next;
end
else
begin
Label1.Caption := '';
Label2.Caption := '';
Label3.Caption := '';
end;
Run Code Online (Sandbox Code Playgroud)
Locate找到与DataSet中指定条件匹配的第一条记录.
如果找到记录,该记录将成为活动/当前记录.
它不能用于定位"下一步"匹配.你可能想用一个Filter什么标准FindFirst/ FindNext例如:
DataSet.Filter := 'Last = ''' + Edit1.Text + '''';
if DataSet.FindFirst then
begin
ShowMessage('Found First!');
while DataSet.FindNext do
begin
ShowMessage('Found Next!');
end;
end;
Run Code Online (Sandbox Code Playgroud)
如果要筛选符合条件的所有记录,只需使用:
DataSet.Filter := 'Last = ''' + Edit1.Text + '''';
DataSet.Filtered := True; // apply filter for the dataset
Run Code Online (Sandbox Code Playgroud)
现在,只有满足过滤条件的记录才可在DataSet中使用.
然后迭代DataSet:
DataSet.First;
while not DataSet.Eof do
begin
// do something with the record
DataSet.Next;
end;
Run Code Online (Sandbox Code Playgroud)