有没有比这更快的迭代ADO数据集的方法
while (not ADOQuery1.Eof) do
begin
/* Do something */
ADOQuery1.Next;
end;我需要扫描大约9000个项目的数据集,并且只提取与预定义的一组分支编号匹配的记录。
发布于 2010-02-23 00:59:26
使用ADORecordset完成这类任务要快得多:
while not ADOQuery1.Recordset.EOF do
begin
ADOQuery1.Recordset.MoveNext;
// get value
SomeVar := ADOQuery1.Recordset.Fields['FieldName'].Value;
end;发布于 2010-02-23 01:23:33
如果不需要花时间更新与DataSet相关的可见控件,请确保使用DisableControls/EnableControls。
try
ADOQuery1.DisableControls;
while (not ADOQuery1.Eof) do
begin
/* Do something */
ADOQuery1.Next;
end;
finally
ADOQuery1.EnableControls;
end;致以问候。
发布于 2010-02-23 00:47:58
@Pieter,两个选项
1)您可以在执行之前修改sql语句,添加与预定义的分支编号集匹配的where条件。
2)使用TAdoQuery的Filter属性。
AdoQuery1.close;
AdoQuery1.filter := 'your condition goes here';
AdoQuery1.filtered := true;
AdoQuery1.Open;https://stackoverflow.com/questions/2312444
复制相似问题