Arkadaşlar Delphi 7 ve firebird için kodları düzenledim ve aşağıda paylaşıyorum.
Form üzerindeki bileşenler 1 adet IBBackupService, 1 adet IBRestoreService, 3 adet label, 2 adet buton, 2 adet listbox, 1 adet panel ve 1 adet progressbar
Form görüntüsü için resim yükleyemedim. Alttaki linki tıklarsanız resim açılır.
https://resimyukle.xyz/i/V8A7f6
Ve tüm Unit 'in kodları... Umarım faydalı olur. Kolay gelsin.
Form üzerindeki bileşenler 1 adet IBBackupService, 1 adet IBRestoreService, 3 adet label, 2 adet buton, 2 adet listbox, 1 adet panel ve 1 adet progressbar
Form görüntüsü için resim yükleyemedim. Alttaki linki tıklarsanız resim açılır.
https://resimyukle.xyz/i/V8A7f6
Ve tüm Unit 'in kodları... Umarım faydalı olur. Kolay gelsin.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IBServices, ComCtrls, ExtCtrls, StdCtrls,DateUtils;
type
TForm1 = class(TForm)
IBBackupService1: TIBBackupService;
IBRestoreService1: TIBRestoreService;
Panel1: TPanel;
ProgressBar1: TProgressBar;
Label5: TLabel;
Yedekle_Btn: TButton;
Label6: TLabel;
Label8: TLabel;
LB_Tarih_Saat: TListBox;
LB_Dosya_Adi: TListBox;
Geri_Yukle_Btn: TButton;
procedure OnAyarlar(Service: TIBCustomService);
procedure Yedekle_BtnClick(Sender: TObject);
procedure Geri_Yukle_BtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure LB_Tarih_SaatClick(Sender: TObject);
procedure LB_Dosya_AdiClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.OnAyarlar(Service: TIBCustomService);
begin
with Service do
begin
Active := False;
ServerName :='localhost'; {*pc'nin adı veya ip adresi. Ağdaki ve ya kendi pc'niz olabilir. Kendi bilgisayarım olduğu için localhost yazdım*}
Protocol :=TCP; {*Basğlantı protokol tipi. Diğer seçenekler için Bileşeni seçip Object Inspectordan bakabilirsiniz.*}
LoginPrompt := False; {* Şifreyi biz gireceğimiz için False Yapıyoruz.*}
Params.Clear; // Params özelliğini tyemizle
Params.Add('user_name=' +'SYSDBA'); //SYSDBA=kullanıcı adı
Params.Add('password=' + 'masterkey'); //masterkey=Şifre
end; //with
// ProgressBar Özelliklerini ayarla
ProgressBar1.Min:=0;
ProgressBar1.Max:=10;
ProgressBar1.Position:=ProgressBar1.Min;
Panel1.Show;
application.ProcessMessages;
end;
procedure TForm1.Yedekle_BtnClick(Sender: TObject);
Var
yedek_dosya_klasoru, yedek_dosya_adi : AnsiString ;
Yil, Ay, Gun, saat, dakika, saniye, salise : Word;
Anlik_Tarih : TDate ;
Anlik_Saat : TTime ;
begin
Anlik_Tarih := Date ; //şu anki tarihi Anlik_Tarih değişkenine ata
Anlik_Saat := Time ; //şu anki saati Anlik_Saat değişkenine ata
DecodeDate ( Anlik_Tarih, Yil, Ay, Gun) ;
DecodeTime ( Anlik_Saat, saat, dakika, saniye, salise) ;
with IBBackupService1 do
begin
OnAyarlar(IBBackupService1);//procedureyi çağır.
Verbose := True; //PrograssBar İçin Gerekli
DatabaseName := ExtractFilePath(Application.ExeName)+'DATA.FDB' ; //yedeklenecek ana veritabanı yolu
yedek_dosya_klasoru := ExtractFilePath(Application.ExeName) + 'Yedek' ; //Programın kurulu olduğu dizinde Yedek isminde klasör
If Not DirectoryExists(yedek_dosya_klasoru) Then // yedek dosya klasörü yoksa oluştur
ForceDirectories(yedek_dosya_klasoru) ;
BackupFile.Clear ;
yedek_dosya_adi := inttostr(Gun) + '_' + inttostr(Ay) + '_' + inttostr(Yil) + '_' +
inttostr(saat) + '_' + inttostr(dakika) + '_' + inttostr(saniye) + '.FDB';//Yedek dosyaya isim vermek. Ben tarih ve saat olarak isim vermeyi seçtim
BackupFile.Add(yedek_dosya_klasoru + '\' + yedek_dosya_adi + ' =2048') ;{* yedeklemenin yapılacağı konum ve yedek dosyasının adı. ikinci parametre olan =2048 sanırım yedekleme yapılırken verinin kaçar byte olarak kopyalanacağını belirliyor. *}
try
Active := True;
ServiceStart; //yedeklemeye başla
while not EOF do
begin
Label5.Caption:=GetNextLine;//yedekleme durumunu labele yaz
{*Progresbar özelliklerini ayarla*}
if ProgressBar1.Position=ProgressBar1.Max then
ProgressBar1.Position:=0;
ProgressBar1.Position:=ProgressBar1.Position+1;
application.ProcessMessages;
end;
LB_Tarih_Saat.Items.Add(DateToStr(Anlik_Tarih) + ' ' + TimeToStr(Anlik_Saat)) ; //tarih ve saati listboxa yaz
LB_Dosya_Adi.Items.Add(yedek_dosya_adi) ; //yedek dosya adını listboxa yaz
LB_Tarih_Saat.Items.SaveToFile(ExtractFilePath(Application.ExeName) + 'Yedek_Tarih.txt'); // listboxı kaydet
LB_Dosya_Adi.Items.SaveToFile(ExtractFilePath(Application.ExeName) + 'Dosya_Adi.txt'); // listboxı kaydet
finally
Active := False;
Panel1.Hide;
end; //try
end; //with
end;
procedure TForm1.Geri_Yukle_BtnClick(Sender: TObject);
Var
Yedek_Dosya_Adi : AnsiString ;
begin
with IBRestoreService1 do
begin
OnAyarlar(IBRestoreService1);//procedureyi çağır.
Verbose := True;//PrograssBar İçin Gerekli
Pagesize:=2048;{* Restore ederken Veritabanının PageeSize özelliğini ayarla. farklı bir seçeneği seçebilirsiniiz*}
Options := [Replace];//eski veritabanını sil
DatabaseName.Clear;
DatabaseName.Add(ExtractFilePath(Application.ExeName)+'DATA.FDB');//yedek dosyanın yükleneceği yer ve dosyanın adı
BackupFile.Clear;
Yedek_Dosya_Adi := ExtractFilePath(Application.ExeName) + 'Yedek\' + LB_Dosya_Adi.Items.Strings[LB_Dosya_Adi.ItemIndex] ; //listboxtan geri yüklenmek istenen veritabanının adını al
if Not fileExists(Yedek_Dosya_Adi) then //geri yüklenmek istenen yedek veritabanı yoksa
begin
ShowMessage('Yüklenmek istenen yedek dosya bulunamadı.');
exit ;//procedure den çık
end ;
BackupFile.Add(Yedek_Dosya_Adi); {* daha önce yedeklenmiş olan dosya yolu ve dosya adı *}
try
Active := True;
ServiceStart;//geri yüklemeye başla
while not EOF do
Begin
Label5.Caption:=GetNextLine; //geri yükleme durumunu labela yaz
{*Progresbar özelliklerini ayarla*}
if ProgressBar1.Position=ProgressBar1.Max then
ProgressBar1.Position:=0;
ProgressBar1.Position:=ProgressBar1.Position+1;
application.ProcessMessages;
End;
finally
Active := False;
Panel1.Hide;
end; //try
end; //with
end;
procedure TForm1.FormShow(Sender: TObject);
begin
if fileExists(ExtractFilePath(Application.ExeName)+'Yedek_Tarih.txt') then
LB_Tarih_Saat.Items.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Yedek_Tarih.txt');
if fileExists(ExtractFilePath(Application.ExeName)+'Dosya_Adi.txt') then
LB_Dosya_Adi.Items.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Dosya_Adi.txt');
LB_Tarih_Saat.ItemIndex := LB_Tarih_Saat.Items.Count - 1 ;
LB_Tarih_SaatClick(Sender);
end;
procedure TForm1.LB_Tarih_SaatClick(Sender: TObject);
begin
LB_Dosya_Adi.ItemIndex := LB_Tarih_Saat.ItemIndex ;
end;
procedure TForm1.LB_Dosya_AdiClick(Sender: TObject);
begin
LB_Tarih_Saat.ItemIndex := LB_Dosya_Adi.ItemIndex ;
end;
end.

