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;