--- ibx/trunk/iblocaldb/nongui/IBCMLocalDBSupport.pas 2021/02/25 11:27:14 314 +++ ibx/trunk/iblocaldb/nongui/IBCMLocalDBSupport.pas 2021/02/25 11:56:36 315 @@ -41,13 +41,13 @@ type private FOnLogMessage: TOnLogMessage; FOnProgressEvent: TOnProgressEvent; - procedure Add2Log(Sender: TObject; Msg: string); - procedure DoUpgrade(IBXScript: TIBXScript; TargetVersionNo: integer); + function DoUpgrade(IBXScript: TIBXScript; TargetVersionNo: integer): boolean; procedure WriteLog(Msg: string); procedure HandleOnGetNextLine(Sender: TObject; var Line: string); procedure IBXScriptCreateDatabase(Sender: TObject; var DatabaseFileName: string); protected + procedure Add2Log(Sender: TObject; Msg: string); override; procedure Downgrade(DBArchive: string); override; function InternalCreateNewDatabase(DBArchive: string): boolean; override; function RestoreDatabaseFromArchive(aFilename: string): boolean; override; @@ -75,8 +75,8 @@ begin WriteLog(Msg); end; -procedure TIBCMLocalDBSupport.DoUpgrade(IBXScript: TIBXScript; - TargetVersionNo: integer); +function TIBCMLocalDBSupport.DoUpgrade(IBXScript: TIBXScript; + TargetVersionNo: integer): boolean; var UpdateAvailable: boolean; UpgradeInfo: TUpgradeInfo; DBArchive: string; @@ -96,7 +96,8 @@ begin end; Add2Log(self,UpgradeInfo.UserMessage); Add2Log(self,Format(sUpdateMsg,[UpgradeInfo.UpdateSQLFile])); - if not IBXScript.RunScript(UpgradeInfo.UpdateSQLFile) then + Result := IBXScript.RunScript(UpgradeInfo.UpdateSQLFile); + if not Result then break; UpdateVersionNo; end; @@ -125,7 +126,9 @@ end; procedure TIBCMLocalDBSupport.Downgrade(DBArchive: string); begin + inherited; RestoreDatabase(DBArchive); + DowngradeDone; end; function TIBCMLocalDBSupport.InternalCreateNewDatabase(DBArchive: string @@ -170,6 +173,8 @@ begin begin BackupFiles.Clear; BackupFiles.Add(aFilename); + DatabaseFiles.Clear; + DatabaseFiles.Add(Database.DatabaseName); Options := [Replace]; Execute(nil); end; @@ -179,7 +184,6 @@ function TIBCMLocalDBSupport.RunUpgradeD ): boolean; var IBXScript: TIBXScript; begin - Result := true; IBXScript := TIBXScript.Create(self); try IBXScript.Database := Database; @@ -187,7 +191,7 @@ begin IBXScript.OnOutputLog := @Add2Log; if assigned(UpgradeConf) then IBXScript.GetParamValue := @UpgradeConf.GetParamValue; - DoUpgrade(IBXScript, TargetVersionNo); + Result := DoUpgrade(IBXScript, TargetVersionNo); finally IBXScript.Free; end; @@ -195,11 +199,13 @@ begin end; function TIBCMLocalDBSupport.SaveDatabaseToArchive(aFilename: string): boolean; -var Service: TIBXClientSideBackupService; begin Result := true; with BackupService do begin + DatabaseName := Database.DatabaseName; + BackupFiles.Clear; + BackupFiles.Add(aFileName); Execute(nil); WriteLog(Format(sBackupDone,[aFileName])); end;