|
@@ -109,6 +109,9 @@ begin
|
|
|
end;
|
|
|
|
|
|
procedure TBillsGatherData.WriteGatherRecord(AGcls, AXmjs: TList);
|
|
|
+var
|
|
|
+ sCurB_Code, sCurName, sCurUnits, sCurPrice: string;
|
|
|
+ bHasCurrrent: Boolean;
|
|
|
|
|
|
procedure DisableAndClearDataSet(ADataSet: TsdDataSet);
|
|
|
begin
|
|
@@ -125,6 +128,15 @@ procedure TBillsGatherData.WriteGatherRecord(AGcls, AXmjs: TList);
|
|
|
|
|
|
procedure BeforeWrite;
|
|
|
begin
|
|
|
+ bHasCurrrent := Assigned(sdvGclBills.Current);
|
|
|
+ if Assigned(sdvGclBills.Current) then
|
|
|
+ begin
|
|
|
+ sCurB_Code := sdvGclBills.Current.ValueByName('B_Code').AsString;
|
|
|
+ sCurName := sdvGclBills.Current.ValueByName('Name').AsString;
|
|
|
+ sCurUnits := sdvGclBills.Current.ValueByName('Units').AsString;
|
|
|
+ sCurPrice := sdvGclBills.Current.ValueByName('Price').AsString;
|
|
|
+ end;
|
|
|
+
|
|
|
sdvDetailGclBills.Filtered := False;
|
|
|
sdvDetailDealBills.Filtered := False;
|
|
|
sdvDetailBGLBills.Filtered := False;
|
|
@@ -135,14 +147,41 @@ procedure TBillsGatherData.WriteGatherRecord(AGcls, AXmjs: TList);
|
|
|
DisableAndClearDataSet(sddDetailBGLBills);
|
|
|
end;
|
|
|
|
|
|
+ function FindCurrentRecord: TsdDataRecord;
|
|
|
+ var
|
|
|
+ i: Integer;
|
|
|
+ Rec: TsdDataRecord;
|
|
|
+ begin
|
|
|
+ Result := nil;
|
|
|
+ for i := 0 to sddGclBills.RecordCount - 1 do
|
|
|
+ begin
|
|
|
+ Rec := sddGclBills.Records[i];
|
|
|
+ if SameText(sCurB_Code, Rec.ValueByName('B_Code').AsString) and
|
|
|
+ SameText(sCurName, Rec.ValueByName('Name').AsString) and
|
|
|
+ SameText(sCurUnits, Rec.ValueByName('Units').AsString) and
|
|
|
+ SameText(sCurPrice, Rec.ValueByName('Price').AsString) then
|
|
|
+ begin
|
|
|
+ Result := Rec;
|
|
|
+ Break;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+
|
|
|
procedure AfterWrite;
|
|
|
+ var
|
|
|
+ Rec: TsdDataRecord;
|
|
|
begin
|
|
|
EnableDataSet(sddDetailBGLBills);
|
|
|
EnableDataSet(sddDetailDealBills);
|
|
|
EnableDataSet(sddDetailGclBills);
|
|
|
EnableDataSet(sddGclBills);
|
|
|
|
|
|
- sdvGclBills.LocateInControl(sddGclBills.Records[0]);
|
|
|
+ if bHasCurrrent then
|
|
|
+ Rec := FindCurrentRecord;
|
|
|
+ if not Assigned(Rec) and (sdvGclBills.RecordCount > 0) then
|
|
|
+ Rec := sdvGclBills.Records[0];
|
|
|
+ sdvGclBills.LocateInControl(Rec);
|
|
|
+
|
|
|
sdvDetailGclBills.Filtered := True;
|
|
|
sdvDetailDealBills.Filtered := True;
|
|
|
sdvDetailBGLBills.Filtered := True;
|