Tabledan nasıl yedekleme yapabilirim?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

Tabledan nasıl yedekleme yapabilirim?

Mesaj gönderen sevturk »

arkadaşlar öncelikle hepinize iyi çalışmalar.. benim sorunum şu: programda table kullanıyorum ve nasıl yedekleme yapacağımı bilmiyorum yardımcı olursanız çookk teşekkür ederim..
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Lütfen forum kurallarını okuyun.
VT Dosyalarını kopyala bence.
Hiç Table'la filan uğraşma.

Kod: Tümünü seç

CopyFile(kaynak,hedef,True);
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

Mesaj gönderen sevturk »

Bu sitede olduğu gibi delphide'de yeniyim daha.. VT dosyaları ne onu bilmiyorum, programımda table'lar kullandım onların yedeklerini programdan nasıl alırım ve alınmış yedeği nasıl açarım hiç bilmiyorum.. yedekleme konusundada hiç bir bilgim bana bu konuda yardımcı olursan şimdiden Allah razı olsun..
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Başlığı düzelttim lütfen dikkat edelim, forum kurallarına uyduğunuz sürece forumdan faydalanabilirsiniz.

Ne tür bir table kullanıyorsunuz? Veritabanı olarak ne kullanıyorsunuz? Bunları cevaplarsanız daha net yanıtlar verilebilir.

Ayrıca forumda yedek veya yedekleme diye aratırsanız pek çok yanıt bulabilirsiniz.

Kolay gelsin.
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

Mesaj gönderen sevturk »

sitede yeni olduğum için başlık konusunda kusuruma bakma.. table derken paradoxda yaptım veritabanını, bilgileri dbgridde listeledim ama bu bilgilerin yedeğini nasıl alırım veya yedek tarihine göre nasıl geri bilgileri alabilirim hiç bilmiyorum, bu konudada hiç bilgim yok yardımlarınız için Allah sizden razı olsun. yardımlarınızı merakla bekliyorum..
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Büyük ihtimalle Database Desktop kullanarak Tablo oluşturdun.
Tabloyu kaydederken bir alias belirtilir.
Bu alias bir klasörü gösterir. C:\Proje1\VeriTabani gibi...
Oluşturduğun tablo bu klasör içine verdiğin isimle kaydedilir. VT(VeriTabanı) dosyasından kastettiğim bu dosyalardı.
Bir buton oluşturup, bu butona bastığında, adı o günün tarihi olan klasör oluşturup içine VT dosyalarını kopyalaman için bir kod örneği;

Kod: Tümünü seç

var
  yeni_klasor:String;
begin
  yeni_klasor:='C:\Proje1\Yedekler\'+DateToStr(Date);
  CreateDir(yeni_klasor);
  CopyFile('C:\Proje1\VeriTabani\Bilgiler.db',yeni_klasor+'\Bilgiler.db',True);
end;
Yedeklediğin dosyaları göstermek için, tablolarının DatabaseName'ini değiştirmen yeterli olacaktır. Formuna DateTimePicker yerleştirerek şu örneği uygulayabilirsin.

Kod: Tümünü seç

Table1.DataBaseName:='C:\Proje1\Yedekler\'+DateToStr(DateTimePicker1.Date);
NOT: Bu kodları denemedim hata verebilir.
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

Mesaj gönderen sevturk »

ulu coder adlı arkadaşım yardımların için çok teşekkür ederim ama verdiğin kodlarda hata verdi nedenini sen benden daha iyi bilirsin.. bu arada ben alias hazırlamadan tablelarımı veritabanına yönlendirdim yani databasename kısmına kendim elle yolu yazarak yaptım verdiğin kodlar bu yüzden çalışmamış olabilirmi.. kusuruma bakmıyosundur inşallah çünkü yedekleme konusunda hiç bir bilgim yok.. cevabını merak ve heyecanla bekliyorum.. yardımcı olduğun için Allah razı olsun.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Table açıkken kopyalamıyor olabilir.
Kodların başına

Kod: Tümünü seç

Table1.Close;
yazıp dene.
Kopyalama yaptıktan sonra da

Kod: Tümünü seç

Table1.Open;
ile yeniden aç.
Bir de hatanın ne olduğunu da yazarsan daha kolay yardımcı oluruz.
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

Mesaj gönderen sevturk »

hatayı şu kısımına veriyo ve imleci true yazısının soluna konumlandırıyo..
CopyFile('C:\sürücükursu\kayit\bilgigirisi.db',yeni_klasor+'\bilgigirisi.db',true);

Error yazısı olarak:
Incompatible types: 'String' and 'PAnsichar' yazıyo.. dediğiniz gibi table1.close ve table1.open kodlarını yazdım yine aynı hatayı verdi.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Benim hatam

Kod: Tümünü seç

CopyFile(PChar('C:\sürücükursu\kayit\bilgigirisi.db'),PChar(yeni_klasor+'\bilgigirisi.db'),true);
Özür diliyorum
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

Mesaj gönderen sevturk »

ulu coder ismini bilmediğim için ulu coder yazıyorum.. yedek alma çalışıyo Allah razı olsun çok teşekkür ederim.. bunda sonra programlarında senin verdiğin kodları kullancam.. ama yedek aldıktan sonra yedekteki tabloyu tekrardan açamıyorum yani 23.04.2006 diye kalsör yapıp içine bilgigirisi diye veritabanını atıyo oraya kadar sorun yok ama daha sonra programdan datetimepickerdan 23.04.2006 seçip yedek çıkar adlı butona basınca o bilgileri getirmiyo.. kod kısmına senin verdiğin kodu yazdım ben eksik yazmış olabilirmiyim:
Table1.DataBaseName:='C:\sürücükursu\yedekler\'+DateToStr(DateTimePicker2.Date);
yardımcı olduğun için Allah razı olsun.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

1-Yazığın ve okuduğun klasörün aynı olduğuna emin misin?
2-DatabaseName'i değiştirdikten sonra Table1'i açıyor musun?
Kodlarını ve hatayı gönderirsen daha sağlıklı olur.

Ben 'C:\Proje1\Yedekler\'+DateToStr(Date);' adresine yedeklemişim, sen nereye kaydettin? Aynı yere kaydettiysen okduğun yer yanlış oluyor.
En iyisi kodları gönder.

Adım ulu coder olarak kalsın :wink:
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

Mesaj gönderen sevturk »

ulu coder'e;
kodlarım şu şekil ve programın veritabanı c:\sürücükursu\kayıt klasörünün içinde ve ben c:\sürücükursu\yedekler adlı klasöre senin sayende 23.04.2006 klasör oluşturup içine yedek alıyorum yalnız sadece bilgigirisi.db alıyo diğer bilgigirisi.mdx gibi dosyaları almıyo..

procedure TForm2.Button5Click(Sender: TObject);
var
yeni_klasor:string;
begin
yeni_klasor:='C:\sürücükursu\yedekler\'+DateToStr(Date);
CreateDir(yeni_klasor);
CopyFile(PChar('C:\sürücükursu\kayıt\bilgigirisi.db'),PChar(yeni_klasor+'\bilgigirisi.db'),true);
end;

procedure TForm2.Button6Click(Sender: TObject);
begin
table1.Close;
Table1.DataBaseName:='C:\sürücükursu\yedekler\'+DateToStr(DateTimePicker2.Date);
table1.open;
end;

böyle yazdıktan sonra yedek çıkar butonuna basınca şöyle hata veriyo:
Index does not exist.
File: C:\sürücükursu\yedekler\23.04.2006\bilgigirisi.MDX.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Cevabı vermişsin arkadaşım;
sevturk yazdı:bilgigirisi.mdx gibi dosyaları almıyo..
böyle yazdıktan sonra yedek çıkar butonuna basınca şöyle hata veriyo:
Index does not exist.
File: C:\sürücükursu\yedekler\23.04.2006\bilgigirisi.MDX.
Bu dosyanın da kopyalanması gerekiyormuş.

Kod: Tümünü seç

CopyFile(PChar('C:\sürücükursu\kayit\bilgigirisi.db'),PChar(yeni_klasor+'\bilgigirisi.db'),true);
bu koda benzer şekilde diğer dosyaları da kopyala.
Bunları kopyalaman yeterli, DataBaseName'i değiştirdiğiniz gibi bi şeyi değiştirmenize gerek yok.
Kolay gelsin
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

Mesaj gönderen sevturk »

ulu coder'e:

ulu coder dediğin gibi kod kısmına ekleyerek diğer dosyalarıda kopyaladım ama bu seferde yedek çıkardıktan sonra sadece ilk kayıt görünüyo yani navigatörle önceki veya sonraki butonlarına basabilsemde dbeditlerde kayıt değişmiyo..

ben deneme amaçlı ali,veli,kemal adlı girişler yapıyorum.. yedek alıyorum daha sonra veli isimli kaydı siliyorum, yedek çıkar butonuna basınca bana sadece ali kaydını gösteriyo..

umarım sorunumla seni sıkmamışımdır ulu coder, istersen müsait zamanında da cevap yazabilirsin yardımların için çok teşekkür ederim Allah razı olsun.
Cevapla