Bladeren bron

进入报表界面、报表管理界面前,预删除旧报表以解决兼容问题。

Chenshilong 7 jaren geleden
bovenliggende
commit
03eb465bab
2 gewijzigde bestanden met toevoegingen van 45 en 16 verwijderingen
  1. 10 15
      DataModules/ReportManagerDM.pas
  2. 35 1
      Frames/ProjectFme.pas

+ 10 - 15
DataModules/ReportManagerDM.pas

@@ -246,21 +246,16 @@ begin
         end;
 
         SetString(sProp, vHead7.ReportProperties, 256);
-        if Pos('报表ID=', sProp)> 0 then
-        begin
-          vSL.Text := sProp;
-          vReport := TReport.Create;
-          vReport.Owner := Self;
-          vReport.ID := StrToInt(vSL.Values['报表ID']);
-  //        vReport.Category := vSL.Values['分类名称'];   // 分类不取本地文件,取线上的。
-          vReport.FileName := SRec.Name;
-          vReport.LocalVer := vSL.Values['版本'];
-          FList.Add(vReport);
-        end
-        else
-        begin
-          DeleteFile(PChar(sFile));
-        end;
+
+        vSL.Text := sProp;
+        vReport := TReport.Create;
+        vReport.Owner := Self;
+        vReport.ID := StrToInt(vSL.Values['报表ID']);
+//        vReport.Category := vSL.Values['分类名称'];   // 分类不取本地文件,取线上的。
+        vReport.FileName := SRec.Name;
+        vReport.LocalVer := vSL.Values['版本'];
+        FList.Add(vReport);
+
       end;
       iRetval := FindNext(SRec);
     end;

+ 35 - 1
Frames/ProjectFme.pas

@@ -210,7 +210,7 @@ uses
   PhaseData, BGLDm, MainFrm, ZhAPI, SearchDm, PHPWebDm, ActiveX,
   ConstUnit, MD5Unit, sdIDTree, sdDB, mProgressFrm, ConditionalDefines,
   ProjectCommands, ProjectProperty, CheckerMemoFrm, BillsMeasureDm,
-  ProgressHintFrm, mProgressProFrm, ReportManagerFrm;
+  ProgressHintFrm, mProgressProFrm, ReportManagerFrm, ScFileArchiverConsts;
 
 {$R *.dfm}
 
@@ -557,6 +557,39 @@ procedure TProjectFrame.dxsbViewControlItemClick(Sender: TObject;
     AfterChangeView;
   end;
   *)
+  procedure ClearOldReports(AReportsPath: string);
+  var
+    SRec: TSearchRec;
+    iRetval, iPos: Integer;
+    vHead7: TScFile7Head;
+    sProp, sFile, sPath: string;
+    vFS: TFileStream;
+  begin
+    iRetval := FindFirst(AReportsPath + '*.srt', faAnyFile, sRec);
+    try
+      while iRetval = 0 do
+      begin
+        if (SRec.Attr and faDirectory) = 0 then
+        begin
+          sFile := AReportsPath + SRec.Name;
+          vFS := TFileStream.Create(sFile, fmOpenRead);
+          try
+            vFS.Read(vHead7, SizeOf(vHead7));
+          finally
+            vFS.Free;
+          end;
+
+          SetString(sProp, vHead7.ReportProperties, 256);
+          iPos := Pos('±¨±íID=', sProp);
+          if iPos <= 0 then
+            DeleteFile(PChar(sFile));
+        end;
+        iRetval := FindNext(SRec);
+      end;
+    finally
+      SysUtils.FindClose(SRec);
+    end;
+  end;
 
   procedure DisplayReports;
   var vRMForm: TReportManagerForm;
@@ -565,6 +598,7 @@ procedure TProjectFrame.dxsbViewControlItemClick(Sender: TObject;
     if G_IsCloud then
     begin
       sPath := ExtractFilePath(ParamStr(0)) + 'ReportTemplates\';
+      ClearOldReports(sPath);
       if FileCount(sPath, '.srt') = 0 then
       begin
         Screen.Cursor := crHourGlass;