Browse Source

修复主表

MaiXinRong 4 years ago
parent
commit
39fe140b26
4 changed files with 111 additions and 5753 deletions
  1. 0 5751
      Forms/MainFrm.$$$
  2. 15 0
      Forms/MainFrm.dfm
  3. 14 0
      Forms/MainFrm.pas
  4. 82 2
      Units/ProjectData.pas

File diff suppressed because it is too large
+ 0 - 5751
Forms/MainFrm.$$$


+ 15 - 0
Forms/MainFrm.dfm

@@ -445,6 +445,11 @@ object MainForm: TMainForm
         item
           Item = dxbtnExportBillsPosExcelData
           Visible = True
+        end
+        item
+          BeginGroup = True
+          Item = dxbtnRepairMainData
+          Visible = True
         end>
     end
     object dxsiEdit: TdxBarSubItem
@@ -1292,6 +1297,10 @@ object MainForm: TMainForm
       Action = actnImportPhaseData
       Category = 2
     end
+    object dxbtnRepairMainData: TdxBarButton
+      Action = actnRepairMainData
+      Category = 2
+    end
   end
   object Images: TImageList
     DrawingStyle = dsTransparent
@@ -3506,6 +3515,12 @@ object MainForm: TMainForm
       OnExecute = actnImportPhaseDataExecute
       OnUpdate = actnImportPhaseDataUpdate
     end
+    object actnRepairMainData: TAction
+      Category = 'File'
+      Caption = #20462#22797#20027#34920
+      OnExecute = actnRepairMainDataExecute
+      OnUpdate = actnRepairMainDataUpdate
+    end
   end
   object dxpmTabSet: TdxBarPopupMenu
     BarManager = dxBarManager

+ 14 - 0
Forms/MainFrm.pas

@@ -197,6 +197,8 @@ type
     ilstExpend: TImageList;
     dxbtnImportPhaseData: TdxBarButton;
     actnImportPhaseData: TAction;
+    dxbtnRepairMainData: TdxBarButton;
+    actnRepairMainData: TAction;
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
     procedure jtsProjectsChange(Sender: TObject; NewTab: Integer;
@@ -254,6 +256,8 @@ type
     procedure actnImportSubTenderGatherGclExcelExecute(Sender: TObject);
     procedure actnImportPhaseDataUpdate(Sender: TObject);
     procedure actnImportPhaseDataExecute(Sender: TObject);
+    procedure actnRepairMainDataUpdate(Sender: TObject);
+    procedure actnRepairMainDataExecute(Sender: TObject);
   private
     FProjectManagerFrame: TProjectManagerFrame;
     FProjectFrames: TList;
@@ -1062,4 +1066,14 @@ begin
     CurProjectFrame.ProjectData.ImportPhaseData(sFileName);
 end;
 
+procedure TMainForm.actnRepairMainDataUpdate(Sender: TObject);
+begin
+  TAction(Sender).Visible := _IsDebugView and Assigned(CurProjectFrame);
+end;
+
+procedure TMainForm.actnRepairMainDataExecute(Sender: TObject);
+begin
+  CurProjectFrame.ProjectData.repairMainData;
+end;
+
 end.

+ 82 - 2
Units/ProjectData.pas

@@ -161,6 +161,8 @@ type
     procedure OpenForImportMtf(const AFileName: string; APhaseIndex: Integer = -1; AStageIndex: Integer = -1);
     //-----------------------  End ---ºǫ́´ò¿ª ------------------------
 
+    procedure RepairMainData;
+
     procedure SaveDebugFile(const AFileName: string);
     procedure SaveTempDataBaseFile(const AFileName: string);
 
@@ -295,7 +297,7 @@ uses
   mProgressProFrm, mDataRecord, ConditionalDefines, DbTreeImport,
   StrUtils, sdProvider, CalcDecimal, Math, CslJson, OrderCheckerFme,
   stgSubGatherFile, Forms, ProgressHintFrm, BillsTree, Controls,
-  stgGclSubGatherFile, rmfImportFrm;
+  stgGclSubGatherFile, rmfImportFrm, DataBaseTables;
 
 { TProjectData }
 
@@ -2533,7 +2535,7 @@ begin
 end;
 
 procedure TProjectData.LoadWebSwitchChange;
-var                
+var
   sgs: TStrings;
   iResult: Integer;
   sResult: string;
@@ -2552,4 +2554,82 @@ begin
   end;
 end;
 
+procedure TProjectData.RepairMainData;
+
+  procedure UpdateSourceFile(const AFileName: string);
+  var
+    vCon: TADOConnection;
+    vUpdate: TUpdateProjectDB;
+  begin
+    vCon := TADOConnection.Create(nil);
+    vCon.LoginPrompt := False;
+    try
+      vCon.ConnectionString := Format(SAdoConnectStr, [AFileName]);
+      vUpdate := TUpdateProjectDB.Create;
+      vUpdate.ForceUpdate(vCon);
+    finally
+      vUpdate.Free;
+      vCon.Free;
+    end;
+  end;
+
+  procedure ExecuteSql1(ACon: TCommonConnection; const ASql: string);
+  var
+    FQuery: TADOQuery;
+  begin
+    FQuery := TADOQuery.Create(nil);
+    try
+      FQuery.Connection := ACon.Connection;
+      FQuery.SQL.Clear;
+      FQuery.SQL.Add(ASql);
+      FQuery.ExecSQL;
+    finally
+      FQuery.Free;
+    end;
+  end;
+
+  procedure CopyData(const ATable, AFile: String; ACon: TCommonConnection);
+  var
+    sSql: string;
+  begin
+    sSql := Format('Insert Into %s Select * From %s In ''%s''', [ATable, ATable, AFile]);
+    ExecuteSql1(ACon, sSql);
+  end;
+
+var
+  sFile, sTemp: String;
+  vTempCon: TCommonConnection;
+begin
+  sFile := FDebugDir + '\Main.mdb';
+  CopyFileOrFolder(GetEmptyDataBaseFileName, sFile);
+  UpdateSourceFile(sFile);
+
+  sTemp := FDebugDir + '\Temp.dat';
+  SaveDebugFile(sTemp);
+  
+  vTempCon := TCommonConnection.Create;
+  try
+    vTempCon.Open(sFile);
+
+    CopyData(SBills, sTemp, vTempCon);
+    CopyData(SProjProperties, sTemp, vTempCon);
+    CopyData(SDealPayment, sTemp, vTempCon);
+    CopyData(SBGL, sTemp, vTempCon);
+    CopyData(SBGBills, sTemp, vTempCon);
+    CopyData(SStaff, sTemp, vTempCon);
+    CopyData(SDealBills, sTemp, vTempCon);
+    CopyData(SMainDataList, sTemp, vTempCon);
+    CopyData(SDealPayFinal, sTemp, vTempCon);
+    CopyData(SProjectGL, sTemp, vTempCon);
+    CopyData(SGLPrice, sTemp, vTempCon);
+    CopyData(SDetailGL, sTemp, vTempCon);
+    CopyData(SOtherMeasureOnce, sTemp, vTempCon);
+    CopyData(SOtherMeasurePhase, sTemp, vTempCon);
+    CopyData(SOMPhaseDetail, sTemp, vTempCon);
+    CopyData(SAttachmentInfo, sTemp, vTempCon);
+  finally
+    vTempCon.Close;
+  end;
+end;
+
 end.