快速拷贝ADODataSet里的Data?

Dingnifei123 2010-05-04 09:35:49

// adsDes 没有直接连接数据库
adsDes:TADODataSet;
adsDes.Close;
adsDes.FieldDefs.Clear;
with adsDes.FieldDefs do
begin
Add('fd1',ftString,15);
Add('fd2',ftString,15);
end;
adsDes.CreateDataSet;

// adsSrc 直接连接数据库的数据集
adsSrc:TADODataSet;
adocDB : TADOConnection;
adsSrc.Close;
adsSrc.Connection := adocDB;
adsSrc.CommandText := 'select fd1,fd2 from tb ';
adsSrc.Open;
// 如下的拷贝方法比较慢,当adsSrc里数据多时,显得特别慢,有什么办法可以改进吗?
if (adsSrc.Active) and (adsSrc.RecordCount>0) then
begin
adsSrc.First;
while not adsSrc.EOF do
begin
adsDes.Append;
adsDes.FieldByName('fd1').AsString := adsSrc.FieldByName('fd1').AsString;
adsDes.FieldByName('fd2').AsString := adsSrc.FieldByName('fd2').AsString;
adsDes.Post;
end;
adsDes.Last;
end;

最好可以像TClientDataSet.Data一样能直接赋值!
...全文
59 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongqi162 2010-05-04
  • 打赏
  • 举报
回复
adsDes.Clone(adsSrc);
bdmh 2010-05-04
  • 打赏
  • 举报
回复
TADODataSet有Clone方法
Dingnifei123 2010-05-04
  • 打赏
  • 举报
回复

while not adsSrc.EOF do
begin
adsDes.Append;
adsDes.FieldByName('fd1').AsString := adsSrc.FieldByName('fd1').AsString;
adsDes.FieldByName('fd2').AsString := adsSrc.FieldByName('fd2').AsString;
adsSrc.Next; //不好意思,少了一行!
adsDes.Post;
end;
风之谷 2010-05-04
  • 打赏
  • 举报
回复
adoquery没有这个方法,

你可以试下

TADODataSet.savetofile

另外一个 loadfromfile 这样应该简单吧

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧