unit ScUpdateDataBase; interface uses SysUtils, ScFileArchiver, ADODB, ScTables, ScAutoUpdateUnit; function UpdateDB(AFileArchiver: TScMDBArchiver): Boolean; implementation uses ConstMethodUnit; procedure DoProjectOnUpdateData(ATableName: string; AEventType: TUpdateEventType; ASQLType: TSQLType; AConnection: TADOConnection); var aqQuery: TADOQuery; begin aqQuery := TADOQuery.Create(nil); try aqQuery.Connection := AConnection; if AEventType = uetAddFields then begin if ATableName = 'DrawingQuantity' then begin aqQuery.SQL.Add(Format('Update %s Set IsGatherQ = IsGatherQty', [ATableName])); aqQuery.ExecSQL; end; end; finally aqQuery.Free; end; end; function UpdateDB(AFileArchiver: TScMDBArchiver): Boolean; var Updater: TScUpdater; begin Updater := TScUpdater.Create; try Updater.OnUpdateData := DoProjectOnUpdateData; Updater.Open(AFileArchiver.FileName, AFileArchiver.Connection, AFileArchiver.FileInfo.FileVersion); Result := Updater.FileNeedUpdate; if Result then begin {Update tables} Updater.AddTableDef(SBills, @tdBills, Length(tdBills), False, False); Updater.AddTableDef(SDrawingQuantity, @tdDrawingQuantity, Length(tdDrawingQuantity), False, False); Updater.AddTableDef(SDQCalcExpression, @tdDQCalcExpression, Length(tdDQCalcExpression), False, False); Updater.AddTableDef(SHisRestorePoints, @tdHisRestorePoints, Length(tdHisRestorePoints), False, False); Updater.AddTableDef(SBidLot, @tdBidLot, Length(tdBidLot), False, False); Updater.AddTableDef(SGradeStat, @tdGradeStat, Length(tdGradeStat), False, False); Updater.AddTableDef(SGradeStatTotal, @tdGradeStatTotal, Length(tdGradeStatTotal), False, False); Updater.AddTableDef(SRecycleBin, @tdRecycleBin, Length(tdRecycleBin), False, False); Result := Updater.ExcuteUpdate; if Result then begin AFileArchiver.SetFileVer(ConstBillsFileVersion); // AFileArchiver.SetFileVer(ConstBudgetFileVersion); end; end; finally Updater.Free; end; end; end.