给 TClientDataSet.Data 赋值时的速度问题 ( 积分: 100 )

  • 主题发起人 主题发起人 searoom
  • 开始时间 开始时间
S

searoom

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用了一个自定义函数,用来给 TClientDataSet.Data 进行赋值,函数如下
function GetCdsData(DBConn:TAdoConnection;
sCom:string):OleVariant;
var
dsp:TDataSetProvider;
aq:TADOQuery;
begin

dsp := TDataSetProvider.Create(nil);
aq := TADOQuery.Create(nil);
try
aq.Connection := DBConn;
aq.CommandTimeout := 60000;
dsp.DataSet := aq;
OpenQuery(aq,DBConn,sCom);
result := dsp.Data;
aq.Close;
finally
aq.Free;
dsp.Free;
end;
end;
然后利用
cds.Date := GetCdsData(DBConn,sCom);
给 cds 进行赋值
出现一个问题:计算超过2、3万条记录都会很慢。
 
直接用cds放在这个里面,
function GetCdsData(DBConn:TAdoConnection;
sCom:string):OleVariant;
传出其中的cds.data,
给外面的cds就行了,
 
这样的话是丢数据包出来,
速度应该不是问题,
即使有问题,也应该是网络的,
 
我发现就是在这一步非常慢
cds.Data := dsp.Data;
 
我是用cds1直接赋值给cds2的,
或通过data(Olevariant)类型传递的,
不觉得慢啊,
 
后退
顶部