Adoquery 转AdoDataSet

在adoquery的afteropen中添加以下代码,adoclone 为AdoDataSet,不有用这个Clone方法,因为修改会改原来的值的

procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);
var
  i:Integer;
begin
 // AdoClone.Clone(ADOQuery1,ltBatchOptimistic);
  AdoClone.Active :=False;
  AdoClone.FieldDefs.Clear;
   for i :=0 to TADOQuery(DataSet).Fields.Count -1 do
   begin
     AdoClone.FieldDefs.Add(TADOQuery(DataSet).Fields[i].FieldName,TADOQuery(DataSet).Fields[i].DataType,TADOQuery(DataSet).Fields[i].Size);
   end;
 if AdoClone.FieldDefs.Count >0 then
  AdoClone.CreateDataSet;

 try
   TADOQuery(DataSet).DisableControls;
   TADOQuery(DataSet).First;
   while not TADOQuery(DataSet).Eof do
   begin
     AdoClone.Append;
     for i :=0 to TADOQuery(DataSet).Fields.Count -1 do
     begin
       if not VarIsNull(TADOQuery(DataSet).Fields[i].Value) then
          AdoClone.Fields[i].Value := TADOQuery(DataSet).Fields[i].Value;
     end;
     AdoClone.Post;
     TADOQuery(DataSet).Next;
   end;
 finally
   TADOQuery(DataSet).EnableControls;
 end;
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值