Browse Source

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

Chenshilong 7 years ago
parent
commit
03eb465bab
2 changed files with 45 additions and 16 deletions
  1. 10 15
      DataModules/ReportManagerDM.pas
  2. 35 1
      Frames/ProjectFme.pas

+ 10 - 15
DataModules/ReportManagerDM.pas

@@ -246,21 +246,16 @@ begin
         end;
         end;
 
 
         SetString(sProp, vHead7.ReportProperties, 256);
         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;
       end;
       iRetval := FindNext(SRec);
       iRetval := FindNext(SRec);
     end;
     end;

+ 35 - 1
Frames/ProjectFme.pas

@@ -210,7 +210,7 @@ uses
   PhaseData, BGLDm, MainFrm, ZhAPI, SearchDm, PHPWebDm, ActiveX,
   PhaseData, BGLDm, MainFrm, ZhAPI, SearchDm, PHPWebDm, ActiveX,
   ConstUnit, MD5Unit, sdIDTree, sdDB, mProgressFrm, ConditionalDefines,
   ConstUnit, MD5Unit, sdIDTree, sdDB, mProgressFrm, ConditionalDefines,
   ProjectCommands, ProjectProperty, CheckerMemoFrm, BillsMeasureDm,
   ProjectCommands, ProjectProperty, CheckerMemoFrm, BillsMeasureDm,
-  ProgressHintFrm, mProgressProFrm, ReportManagerFrm;
+  ProgressHintFrm, mProgressProFrm, ReportManagerFrm, ScFileArchiverConsts;
 
 
 {$R *.dfm}
 {$R *.dfm}
 
 
@@ -557,6 +557,39 @@ procedure TProjectFrame.dxsbViewControlItemClick(Sender: TObject;
     AfterChangeView;
     AfterChangeView;
   end;
   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;
   procedure DisplayReports;
   var vRMForm: TReportManagerForm;
   var vRMForm: TReportManagerForm;
@@ -565,6 +598,7 @@ procedure TProjectFrame.dxsbViewControlItemClick(Sender: TObject;
     if G_IsCloud then
     if G_IsCloud then
     begin
     begin
       sPath := ExtractFilePath(ParamStr(0)) + 'ReportTemplates\';
       sPath := ExtractFilePath(ParamStr(0)) + 'ReportTemplates\';
+      ClearOldReports(sPath);
       if FileCount(sPath, '.srt') = 0 then
       if FileCount(sPath, '.srt') = 0 then
       begin
       begin
         Screen.Cursor := crHourGlass;
         Screen.Cursor := crHourGlass;