ソースを参照

计量台账,定位中间计量,中间计量模式为计量汇总时,汇总清单应定位成功

MaiXinRong 7 年 前
コミット
aa47558984
4 ファイル変更24 行追加3 行削除
  1. 1 1
      DataModules/BillsMeasureDm.pas
  2. 7 0
      DataModules/ZJJLDm.dfm
  3. 14 0
      DataModules/ZJJLDm.pas
  4. 2 2
      Frames/ProjectFme.pas

+ 1 - 1
DataModules/BillsMeasureDm.pas

@@ -1040,7 +1040,7 @@ function TBillsMeasureData.FindNodeWithZJJL(ANode: TsdIDTreeNode): TsdIDTreeNode
 
   function CheckNodeHasZJJL(ANode: TsdIDTreeNode): Boolean;
   begin
-    Result := Assigned(TProjectData(FProjectData).PhaseData.ZJJLData.sddZJJL.Locate('BillsID', ANode.ID));
+    Result := Assigned(TProjectData(FProjectData).PhaseData.ZJJLData.FindZJJLRecord(ANode.ID));
   end;
 
   function FindChildWithZJJL(ANode: TsdIDTreeNode): TsdIDTreeNode;

+ 7 - 0
DataModules/ZJJLDm.dfm

@@ -179,5 +179,12 @@ object ZJJLData: TZJJLData
     Provider = sdpZJJLDetail
     Left = 200
     Top = 80
+    FieldListData = {
+      0101044E616D6506024944094669656C644E616D650602494408446174615479
+      70650203084461746153697A6502040549734B6579080F4E65656450726F6365
+      73734E616D650909507265636973696F6E02000453697A6502000001044E616D
+      65060742696C6C734944094669656C644E616D65060742696C6C734944084461
+      7461547970650203084461746153697A6502040549734B6579080F4E65656450
+      726F636573734E616D650909507265636973696F6E02000453697A6502000000}
   end
 end

+ 14 - 0
DataModules/ZJJLDm.pas

@@ -108,6 +108,7 @@ type
     function GetInfoRec(ABillsID, AType: Integer): TZJJLInfoRec;
 
     procedure LocateBills;
+    function FindZJJLRecord(ABillsID: Integer): TsdDataRecord;
 
     property PhaseData: TObject read FPhaseData;
     property MainBillsTree: TsdIDTree read GetMainBillsTree;
@@ -868,4 +869,17 @@ begin
   end;
 end;
 
+function TZJJLData.FindZJJLRecord(ABillsID: Integer): TsdDataRecord;
+var
+  ADetailRec: TsdDataRecord;
+begin
+  if sddZJJLDetail.RecordCount > 0 then
+  begin
+    ADetailRec := sddZJJLDetail.Locate('BillsID', ABillsID);
+    Result := sddZJJL.FindKey('idxID', ADetailRec.ValueByName('ID').AsInteger);
+  end
+  else
+    Result := sddZJJL.Locate('BillsID', ABillsID);
+end;
+
 end.

+ 2 - 2
Frames/ProjectFme.pas

@@ -213,7 +213,7 @@ uses
   ConstUnit, MD5Unit, sdIDTree, sdDB, mProgressFrm, ConditionalDefines,
   ProjectCommands, ProjectProperty, CheckerMemoFrm, BillsMeasureDm,
   ProgressHintFrm, mProgressProFrm, ReportManagerFrm, BillsCompileDm,
-  ScFileArchiverConsts, Math;
+  ScFileArchiverConsts, Math, ZJJLDm;
 
 {$R *.dfm}
 
@@ -1676,7 +1676,7 @@ begin
     tobtnZJJL.Down := True;
     tobtnZJJL.Click;
   end;
-  Rec := FProjectData.PhaseData.ZJJLData.sddZJJL.Locate('BillsID', ABillsID);
+  Rec := FProjectData.PhaseData.ZJJLData.FindZJJLRecord(ABillsID);
   FProjectData.PhaseData.ZJJLData.sdvZJJL.LocateInControl(Rec);
 end;