![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: Fibplus
DB Restore mit Fibplus
Hallo zusammen
habe ein Problem mit dem Restore einer DB bei dem immer die Fehlermeldung Exception class EStringListError with message 'List index out of bounds (0)' auftaucht.
Delphi-Quellcode:
kann mir da jemand weiterhelfen.
procedure Tfrm_backup_restore.btn_restoreClick(Sender: TObject);
begin with DM.Restore_Service do begin OpenDialogBackup.Options := [ofFileMustExist]; if not (OpenDialogBackup.Execute) then exit; Options := [Replace, CreateNewDB]; DatabaseName.Clear; BackupFile.Clear; memo_log.Clear; memo_log.Lines.Add('*** Database file(s): ***'); for i := 0 to OpenDialogDatabase.Files.Count - 1 do memo_log.Lines.Add('*** Backup file(s): ***'); DatabaseName.Add (IncludeTrailingPathDelimiter(GetCurrentDir)+('GIDEONS_DB.FDB')); for i := 0 to OpenDialogBackup.Files.Count - 1 do begin BackupFile.Add(OpenDialogBackup.Files.Strings[i]); memo_log.Lines.Add(OpenDialogBackup.Files.Strings[i]); end; memo_log.Lines.Add( '==================== Restore started ===================='); Active := True; btn_backup.Enabled := False; btn_restore.Enabled := False; ServiceStart; while not (Eof) do memo_log.Lines.Add(GetNextLine); Active := False; btn_backup.Enabled := True; btn_restore.Enabled := True; memo_log.Lines.Add( '==================== Restore ended ===================='); end; end; Bin schon seit einiger Zeit am Testen. Shalom Manfred |
Re: DB Restore mit Fibplus
Das da hat mit FIBplus aber wirklich nur bedingt zu tun. Aus dem Source glaube ich erkennen zu können, daß es zwei Memos oder was ganz anderes gibt, wo Dateinamen aufgelistet werden. :duck: Die Glaskugel vermutet, das wäre deshalb so, weil es eventuell um eine Auswahl verschiedener Backups geht. Kommt mir wegen der Fehlermeldung aber so vor, als würde es lediglich an den Schleifen liegen. Deshalb kurz und knapp : die Erläuterung was was ist und der (unkommentierte) Source ist zu knapp. :mrgreen:
|
Re: DB Restore mit Fibplus
Hallo Hansa
Delphi-Quellcode:
Habe das ganze versucht ein wenig zu Dokumentieren ( ma lernt immer dazu :wink: )
procedure Tfrm_backup_restore.btn_restoreClick(Sender: TObject);
begin with DM.Restore_Service do begin Options := [Replace, CreateNewDB]; DatabaseName.Clear; // Database Paramameter Clear BackupFile.Clear; // BackupFile Paramameter Clear DatabaseName.Add (IncludeTrailingPathDelimiter(GetCurrentDir)+('GIDEONS_DB.FDB')); BackupFile.Add (IncludeTrailingPathDelimiter(GetCurrentDir)+('gideons_db_backup__01.11.2006.gbk')); memo_log.Lines.Add( '==================== Restore started ===================='); Active := True; // FIBPlus Backup Service Active btn_backup.Enabled := False; // Backupbutton diabled btn_restore.Enabled := False; // Restorebutton diabled ServiceStart; // FIBPlus Backup Service Start while not (Eof) do // Logoutput to memo_log memo_log.Lines.Add(GetNextLine); Active := False; // FIBPlus Backup Service Active btn_backup.Enabled := True; // Backupbutton enabled btn_restore.Enabled := True; // Restorebutton enabled memo_log.Lines.Add( '==================== Restore ended ===================='); end; end; Das Memofeld ist nur dazu da um den Output ( Log ) darzustellen damit der User sieht das was läuft. Die Auswahl der Dateien habe ich rausgenommen um dem Problem ein wenig näher zu kommen. ... Der Fehler tritt immer noch auf. ( mit obigem Code ) Manfred |
Re: DB Restore mit Fibplus
Hallo manfred_h,
sind die drei Listen DatabaseName, BackupFile und memo_log mit Create erstellt worden, bevor du hier Clear aufrufst? Ist es korrekt, dass du OpenDialogBackup.Execute aufrufst, aber hinterher auf OpenDialogDatabase zugreifst? [add] Wo kommt GetCurrentDir her? [/add] |
Re: DB Restore mit Fibplus
Zitat:
Hallo MrSpock Die "Komponenten ( DatabaseName, BackupFile )" sind in einem Datamodule da muss ich die doch nicht noch mit create erstellen? Die Memokomponente funktionier auch aber sobald
Delphi-Quellcode:
ausgeführt wird kommt die Fehlermeldung.Active := False; // FIBPlus Backup Service Active Zitat:
Shalom Manfred >>MrSpock Wo kommt GetCurrentDir her? > Wie meinst Du das? |
Re: DB Restore mit Fibplus
Hallo esten dank für Eure Hilfe
Das Problem war das ich die Userdaten nicht übergeben habe:
Delphi-Quellcode:
Danke Euch beiden.
procedure Tfrm_backup_restore.btn_restoreClick(Sender: TObject);
begin with DM.Restore_Service do begin Params.Add ('user_name=sysdba'); Params.Add ('password=masterkey'); Options := [Replace, CreateNewDB]; DatabaseName.Clear; // Database Paramameter Clear BackupFile.Clear; // BackupFile Paramameter Clear DatabaseName.Add (IncludeTrailingPathDelimiter(GetCurrentDir)+('GIDEONS_DB.FDB')); BackupFile.Add (IncludeTrailingPathDelimiter(GetCurrentDir)+('gideons_db_backup__01.11.2006.gbk')); memo_log.Lines.Add( '==================== Restore started ===================='); Active := True; // FIBPlus Backup Service Active btn_backup.Enabled := False; // Backupbutton diabled btn_restore.Enabled := False; // Restorebutton diabled ServiceStart; // FIBPlus Backup Service Start while not (Eof) do // Logoutput to memo_log memo_log.Lines.Add(GetNextLine); Active := False; // FIBPlus Backup Service Active btn_backup.Enabled := True; // Backupbutton enabled btn_restore.Enabled := True; // Restorebutton enabled memo_log.Lines.Add( '==================== Restore ended ===================='); end; end; Shalom Manfred |
Re: DB Restore mit Fibplus
Hallo Manfred,
ich wusste nicht, aus welchem Modul die Procedure GetCurrentDir stammt und ob der von der Prozedur übergebene Pfad eventuell inkorrekt ist. Interessant ist nur, dass das Vergessen der Übergabe der Parameter eine nicht so gaaanz aussagekräftife Fehlermeldung hervorbringt. :mrgreen: |
Re: DB Restore mit Fibplus
Hallo MrSpock
ja da gebe ich Dir recht. Danke trozdem. Shalom Manfred |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz