Skip to main content

AccessTr.neT


Visual Basic te Acces Veritabanı Yedekleme Tarihli

Visual Basic te Acces Veritabanı Yedekleme Tarihli

#1
Arkadaşlar Merhaba,
İşin Gerçeği Sizlere Bir Vefa Borcumu Bİr Nebzede Olsa Ödemek İstedim.
Geçenlerde Son Yazdığım Program Üzerinde Aldığım Bir Hata Mesajı Üzerine Site Sİte Dolaşmaya Başladım.Sizin Sitenizde Basitte Olsa Bir Çözüm Buldum ve Bunu Geliştirdim. Neyse Forumu Uzun Süre İnceledikten Sonra Veritabanımızın Yedeğini Belirli Bir yere Tarihiyle Alıp Sonrada Aynı Veritabanını Programa Çağıracak KodlarıYazacağım Sizlere.
Arkadaşlar Kullandığım Yazılım Visual Basic 2008 Versiyonu.
Veritabanı Olarak Access kullandım.


arkadaşlar Formumuza Sytem.IO yu import etmemiz lazım yoksa çalışmaz
ve Formumuza Bir adet "openfiledialog" nesnesi atacağız.

Imports System.IO

Arkadaşlar Formumuza Sadece Bir Buton Ekliyoruz.
Butonunuzun İsmini "Veritabanı Yedekle" Olarak Değiştiriniz.
Ve Form Click Olayımıza Aşşağıdaki Kodu Yazıyoruz.

Code:

'veritabanı yedekle
Dim zaman As New Date 'burada zaman değişkenimizi atadık
Dim uzanti As String 'burada ise uzantısını atadık "Kayıt.mdb" gibi
zaman = DateTime.Today 'zaman isimli değişkenimize "today" ile bugünün tarihini verdik
uzanti = (".mdb") 'uzanti isimli değişkenimizde ise Uzantımızı
Select Case File.Exists("D:\EVRAK TAKİP yedek\database\" & (zaman) & (uzanti))
'bakınız bu bölümde aynı tarih isimli dosya var mı ona bakıyoruz.
Case True
MsgBox("Bugün Zaten yedek Alınmış", MsgBoxStyle.Information, "Dikkat !")
'eğer aynı gün aldığımız yedek varsa yedeği tanıdı ve uyarı verdi
Case False
'bu bölümde ise eğer aynı gün yedek yoksa dosyayı kopyalayacak.
FileCopy("kayıt.mdb", "D:\EVRAK TAKİP yedek\database\" & Path.GetFileName(zaman) & uzanti)
'buradaki "zaman" ve "uzanti" değişkenlerine dikkat edin zaman dosya adını değiştirdi.
'uzantı ise dosya uzantımızı atadı.
MsgBox("Veritabanı Yedekleme İşlemi Tamamlanmıştır, Veritabanı D:\EVRAK TAKİP yedek\database\ Klasörünün İçindedir", MsgBoxStyle.Information, "İşlem")
'işlem bitti ve dosyamız ydeklendi mesajını aldık.
Case Else
MsgBox("İşlemi tekrar deneyiniz.", MsgBoxStyle.Information, Me.Text)
End Select


Arkadaşlar bakınız yukarıda Programımızdan Veritabanını aldık ve dosya adını o günün tarihiyle değiştirdik. ve dosya uzantısınıda atayarak istediğimiz klasöre kopyaladık.
yani Programı yazdığımız yerde ki veri tabanı adımız "kayıt.mdb" olmasına rağmen dosyayı kopyaladıktan sonra "01.02.2011.mdb" olarak atadı. hem hangi gün kayıt aldığımızı yazdık hemde eğer o gün kayıt alındıysa kullanıcıya haber verdi.


Şimdi Yedek aldığımız veritabanını Porgram ana dizinine geri çağıracağız. "Yedeği geri Yükle" döngümüzü alacağız.
Şimdi bakın burada en dikkat edilecek husus şudur arkadaşlar. Bizim Programa tanıttığımız veritabanı "kayıt.mdb" peki yedeklediğimiz dosya ise "01.02.2011" dir.
geriye kopyalarsa tarih isimli yedeği alacak ve programımız görmeyecek. O Zaman Demin ki işlemi Ters Çevireceğiz.Arkadaşlar Yine Formumuza Bir buton Ekleyerek Adınıda "yedeği Geri Al" olarak değiştirdik.
Ve Button Click Olayına Şu kodu yazacağız.


code:


Dim uzanti As String
've sürekli olarak kullanıcıdan dosya ismi değiştirmesini ister.
Dim dosyadi As String
Dim zaman As New Date
dosyadi = ("kayıt")
uzanti = (".mdb")
Dim dosya As New FileInfo("\kayıt.mdb")
Dim Ac As New OpenFileDialog
'bakın Burada ac diye bir değişken atadık
Ac.FileName = vbNullString
Ac.Filter = "Tüm Dosyalar (*.*) |*.*" 'Hangi Tip Dosyalar Açacağımızı soruyor
Ac.InitialDirectory = ("D:\EVRAK TAKİP yedek\database\") 'burada nereden açılacağı
If Ac.ShowDialog = Windows.Forms.DialogResult.OK Then
Select Case File.Exists("C:\Program Files\Proje Takip\" & (dosyadi) & (uzanti))
Case True
'arkadaşlar kill silme kodudur. yedeğimiz dosyaya alırken aynı dosya olduğu için hata verecektir.
'eski veritabanını siliyoruz.
Kill("C:\Program Files\Proje Takip\kayıt.mdb")
File.Copy(Ac.FileName, "C:\Program Files\Proje Takip\" & (dosyadi) & (uzanti))
'bakın işte burada az önce yedeklede yaptığımız işlemi ters çevirerek yaptık

MsgBox(Path.GetFileName(Ac.FileName) & " dosyası başarı ile taşındı", MsgBoxStyle.Information, "Uyarı")
Case False

File.Copy(Ac.FileName, "C:\Program Files\Proje Takip" & (dosyadi) & (uzanti))

MsgBox(Path.GetFileName(Ac.FileName) & " dosyası başarı ile taşındı", MsgBoxStyle.Information, "Uyarı")
Case Else
MsgBox("İşlemi tekrar deneyiniz.", MsgBoxStyle.Information, Me.Text)
End Select

End If

Arkadaşlar takıldığınız Noktada Sorularınızı Cevaplayabilirim.
Bu kodun İlk halini İnternet Üzerinden Aldım(YAzması Zor geldi deImg-grin))
Daha Sonra geliştirerek sizlere Sunuyorum.
Arkadaşlar Çok Fazla Vaktim Olmadığından Dolayı nete Çok Fazla Giremiyorum.
Ama Arada Birde Olsa Siz Değerli Accesstr.net Ailesini Ziyaret Edeceğim.

Not: Alıntı Değildir.
Ümit Tombalak
Cevapla
#2
Paylaşım için teşekkürler.

Bu arada kodların sayfaya yerleşimini sizin için ayarladım. İzninizleImg-grin
Cevapla
#3
Paylaşım İçin Teşekkürler.
Cevapla
#4
Paylaşım için teşekkürler
Cevapla
#5
(08/04/2011, 20:07)BlackEagle yazdı: Paylaşım için teşekkürler.

Bu arada kodların sayfaya yerleşimini sizin için ayarladım. İzninizleImg-grin

Ne Demek Efendim Teşekkür Ederim
Cevapla
#6
Paylaşım İçin Teşekkürler Benim İki sorum olacak burda kaydetme yerini kullanıcıya sorması için hangi kodu eklememiz gerekir. ikinci Sorum İse veri tabanını yedekten alırken C:\Program Files\Proje Takip\ şeklinde değilde program hangi klasörler altındaysa otomatik uzantısını aldırıp yazdırabılırmıyız?
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task