ScUpdateDataBase.pas 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. unit ScUpdateDataBase;
  2. interface
  3. uses
  4. SysUtils, ScFileArchiver, ADODB, ScTables, ScAutoUpdateUnit;
  5. function UpdateDB(AFileArchiver: TScMDBArchiver): Boolean;
  6. implementation
  7. uses ConstMethodUnit;
  8. procedure DoProjectOnUpdateData(ATableName: string; AEventType: TUpdateEventType;
  9. ASQLType: TSQLType; AConnection: TADOConnection);
  10. var
  11. aqQuery: TADOQuery;
  12. begin
  13. aqQuery := TADOQuery.Create(nil);
  14. try
  15. aqQuery.Connection := AConnection;
  16. if AEventType = uetAddFields then
  17. begin
  18. if ATableName = 'DrawingQuantity' then
  19. begin
  20. aqQuery.SQL.Add(Format('Update %s Set IsGatherQ = IsGatherQty', [ATableName]));
  21. aqQuery.ExecSQL;
  22. end;
  23. end;
  24. finally
  25. aqQuery.Free;
  26. end;
  27. end;
  28. function UpdateDB(AFileArchiver: TScMDBArchiver): Boolean;
  29. var
  30. Updater: TScUpdater;
  31. begin
  32. Updater := TScUpdater.Create;
  33. try
  34. Updater.OnUpdateData := DoProjectOnUpdateData;
  35. Updater.Open(AFileArchiver.FileName, AFileArchiver.Connection, AFileArchiver.FileInfo.FileVersion);
  36. Result := Updater.FileNeedUpdate;
  37. if Result then
  38. begin
  39. {Update tables}
  40. Updater.AddTableDef(SBills, @tdBills, Length(tdBills), False, False);
  41. Updater.AddTableDef(SDrawingQuantity, @tdDrawingQuantity, Length(tdDrawingQuantity), False, False);
  42. Updater.AddTableDef(SDQCalcExpression, @tdDQCalcExpression, Length(tdDQCalcExpression), False, False);
  43. Updater.AddTableDef(SHisRestorePoints, @tdHisRestorePoints, Length(tdHisRestorePoints), False, False);
  44. Updater.AddTableDef(SBidLot, @tdBidLot, Length(tdBidLot), False, False);
  45. Updater.AddTableDef(SGradeStat, @tdGradeStat, Length(tdGradeStat), False, False);
  46. Updater.AddTableDef(SGradeStatTotal, @tdGradeStatTotal, Length(tdGradeStatTotal), False, False);
  47. Updater.AddTableDef(SRecycleBin, @tdRecycleBin, Length(tdRecycleBin), False, False);
  48. Result := Updater.ExcuteUpdate;
  49. if Result then
  50. begin
  51. AFileArchiver.SetFileVer(ConstBillsFileVersion);
  52. // AFileArchiver.SetFileVer(ConstBudgetFileVersion);
  53. end;
  54. end;
  55. finally
  56. Updater.Free;
  57. end;
  58. end;
  59. end.