瀏覽代碼

报表汇总,复制当前打开项目的项目属性至汇总数据库以供查询

MaiXinRong 8 年之前
父節點
當前提交
a941431c8c
共有 2 個文件被更改,包括 47 次插入10 次删除
  1. 46 9
      Report/ProjGather/rpgGatherControl.pas
  2. 1 1
      Report/ReportConnection.pas

+ 46 - 9
Report/ProjGather/rpgGatherControl.pas

@@ -3,13 +3,13 @@ unit rpgGatherControl;
 interface
 
 uses
-  Classes, rpgGatherData, ADODB, ReportManager;
+  Classes, rpgGatherData, ADODB, ReportManager, ProjectData;
 
 type
   TrpgGatherControl = class
   private
     // 当前打开项目,根据其筛选项目
-    FProjectID: Integer;
+    FProjectData: TProjectData;
     // 当前汇总的报表 -- 主要用于读取报表中的附加信息
     FTemplate: TTemplateNode;
     FHistroyProjs: TList;
@@ -21,9 +21,12 @@ type
     function SelectProject: Boolean;
     function SameSelect: Boolean;
 
+    procedure CopyTables(const AFileName, ATableName: string);
+    procedure CopyRelaData;
+
     procedure RefreshGather;
   public
-    constructor Create(AProjectID: Integer);
+    constructor Create(AProjectData: TProjectData);
     destructor Destroy; override;
 
     function RefreshConnection(ATemplate: TTemplateNode): TADOConnection;
@@ -33,16 +36,17 @@ implementation
 
 uses
   ZhAPI, GatherProjInfo, ProjGather, ProjGatherSelectFrm, Globals, Forms,
-  Controls;
+  Controls, UtilMethods, SysUtils;
 
 { TrpgGatherControl }
 
-constructor TrpgGatherControl.Create(AProjectID: Integer);
+constructor TrpgGatherControl.Create(AProjectData: TProjectData);
 begin
-  FProjectID := AProjectID;
+  FProjectData := AProjectData;
   FHistroyProjs := TList.Create;
   FSelectProjs := TList.Create;
   FGatherData := TrpgGatherData.Create;
+  CopyRelaData;
 end;
 
 destructor TrpgGatherControl.Destroy;
@@ -54,6 +58,20 @@ begin
   inherited;
 end;
 
+procedure TrpgGatherControl.CopyRelaData;
+var
+  sTempFile: string;
+begin
+  sTempFile := GetTempFileName;
+  try
+    FProjectData.SaveTempDataBaseFile(sTempFile);
+    CopyTables(sTempFile, 'ProjProperties');
+  finally
+    if FileExists(sTempFile) then
+      DeleteFile(sTempFile);
+  end;
+end;
+
 function TrpgGatherControl.RefreshConnection(ATemplate: TTemplateNode): TADOConnection;
 begin
   FTemplate := ATemplate;
@@ -79,7 +97,7 @@ begin
       Gather.Gather(FSelectProjs, FTemplate.InteractInfo.SpecialProjGatherTypes)
     else
       Gather.Gather(FSelectProjs, nil);
-    FGatherData.LoadRelaData(FProjectID);
+    FGatherData.LoadRelaData(FProjectData.ProjectID);
     ClearObjects(FHistroyProjs);
     FHistroyProjs.Assign(FSelectProjs);
   finally
@@ -132,9 +150,28 @@ end;
 function TrpgGatherControl.SelectProject: Boolean;
 begin
   if FTemplate.IsExtra then
-    Result := SelectGatherProject(FProjectID, FHistroyProjs, FSelectProjs, FTemplate.InteractInfo.SpecialProjGatherTypes)
+    Result := SelectGatherProject(FProjectData.ProjectID, FHistroyProjs, FSelectProjs, FTemplate.InteractInfo.SpecialProjGatherTypes)
   else
-    Result := SelectGatherProject(FProjectID, FHistroyProjs, FSelectProjs);
+    Result := SelectGatherProject(FProjectData.ProjectID, FHistroyProjs, FSelectProjs);
+end;
+
+procedure TrpgGatherControl.CopyTables(const AFileName,
+  ATableName: string);
+const
+  sCopySql = 'Select * Into %s' +
+             '  From %s In ''%s''';
+var
+  vQuery: TADOQuery;
+begin
+  vQuery := TADOQuery.Create(nil);
+  try
+    vQuery.Connection := FGatherData.Connection;
+    vQuery.SQL.Clear;
+    vQuery.SQL.Add(Format(sCopySql, [ATableName, ATableName, AFileName]));
+    vQuery.ExecSQL;
+  finally
+    vQuery.Free;
+  end;
 end;
 
 end.

+ 1 - 1
Report/ReportConnection.pas

@@ -27,7 +27,7 @@ implementation
 constructor TReportConnection.Create(AProjectData: TProjectData);
 begin
   FProjectData := AProjectData;
-  FCommonGather := TrpgGatherControl.Create(AProjectData.ProjectID);
+  FCommonGather := TrpgGatherControl.Create(AProjectData);
   FConnection := AProjectData.ADOConnection;
 end;