|
@@ -102,9 +102,10 @@ var
|
|
|
begin
|
|
|
if HasLockedDetailGL(ABillsID) then Exit;
|
|
|
|
|
|
+ ClearDetailGLs(ABillsID);
|
|
|
+
|
|
|
sddDetailGL.BeginUpdate;
|
|
|
try
|
|
|
- ClearDetailGLs(ABillsID);
|
|
|
iNewID := GetsdDataSetNewID(sddDetailGL, 'idxID');
|
|
|
for i := 0 to AGLs.Count - 1 do
|
|
|
begin
|
|
@@ -116,7 +117,7 @@ begin
|
|
|
Rec.Code.AsInteger := GLRec.Code.AsInteger;
|
|
|
Rec.Quantity.AsFloat := GLRec.Quantity.AsFloat;
|
|
|
Rec.CreatePhaseID.AsInteger := TProjectData(FProjectData).ProjProperties.PhaseCount;
|
|
|
-
|
|
|
+
|
|
|
Rec.RelaProjectGL := GLRec.RelaProjectGL;
|
|
|
end;
|
|
|
finally
|
|
@@ -127,14 +128,20 @@ end;
|
|
|
procedure TDetailGLData.ClearDetailGLs(ABillsID: Integer);
|
|
|
var
|
|
|
idx: TsdIndex;
|
|
|
- Rec: TsdDataRecord;
|
|
|
+ iFirst, iLast, iRec: Integer;
|
|
|
begin
|
|
|
- idx := sddDetailGL.FindIndex('idxBillsID');
|
|
|
- Rec := idx.FindKey(ABillsID);
|
|
|
- while Assigned(Rec) do
|
|
|
- begin
|
|
|
- sddDetailGL.Remove(Rec);
|
|
|
- Rec := idx.FindKey(ABillsID);
|
|
|
+ sddDetailGL.BeginUpdate;
|
|
|
+ try
|
|
|
+ idx := sddDetailGL.FindIndex('idxBillsID');
|
|
|
+ iFirst := idx.FindKeyIndex(ABillsID);
|
|
|
+ if iFirst <> -1 then
|
|
|
+ begin
|
|
|
+ iLast := idx.FindKeyLastIndex(ABillsID);
|
|
|
+ for iRec := iFirst to iLast do
|
|
|
+ sddDetailGL.Remove(idx.Records[iRec]);
|
|
|
+ end;
|
|
|
+ finally
|
|
|
+ sddDetailGL.EndUpdate;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
@@ -156,7 +163,6 @@ end;
|
|
|
|
|
|
destructor TDetailGLData.Destroy;
|
|
|
begin
|
|
|
-
|
|
|
inherited;
|
|
|
end;
|
|
|
|