现有数据集 TSQLDATASET : A ,B,2个 A是B的主表 一对多关系,另有TUSERDATASET : C,C里有N多临时字段。
执行如下代码时如果数据量少,没问题,数据量多时就卡机了
if A.DataSet.IsEmpty then exit;
A.DataSet.First;
C.DataSet.CancelUpdates;
C.DataSet.Append;
while not A.DataSet.Eof do
begin
IF B.DataSet.IsEmpty THEN continue;
B.DataSet.First;
WHILE NOT B.DataSet.Eof DO
BEGIN
if (C.DataSet.FieldDefs.IndexOf(B.DataSet.FieldByName('SHFT_INDX_CD').AsString)>=0) and (not B.DataSet.FieldByName('SHFT_INDX_VAL').IsNull) then
begin
try
C.DataSet.FieldByName(B.DataSet.FieldByName('SHFT_INDX_CD').AsString).AsInteger :=
C.DataSet.FieldByName(B.DataSet.FieldByName('SHFT_INDX_CD').AsString).AsInteger + B.DataSet.FieldByName('SHFT_INDX_VAL').AsInteger;