veri tabanı ve otomatik yedekleme

Katılım
19 Aralık 2006
Mesajlar
60
Excel Vers. ve Dili
excelxp
Altın Üyelik Bitiş Tarihi
26-09-2020
arkadaşlar program boyutu büyük olduğu için ekleyemedim program akar.mdb şeklinde acces programı tek bir dosya şeklinde gözüyor acaba bir klasör oluşturup veri adında bir mdb daha oluşturup verilerin burda depolanmasını sağlayabilirmiyiz ve bu veri dosyası otomatik yedeklenebilir mi? programın içindeki tüm verileri sildim ancak rar yaptım 2.712 kb oldu
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,345
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Yedeklemeyi WinRAR ile sıkıştıran bir uygulama yapmıştım.

Kod:
'*******************************
'*******************************
'****    Zeki Gürsoy ©  ********
'****       2008        ********
'*******************************
'*******************************
Option Base 1

Sub Yedekle()
Const BackUpFile    As String = "C:\BackUp.mdb"
Const tmpBackUpFile As String = "C:\tmpBackUp.mdb"

WinRARX$ = Environ$("ProgramFiles") & "\WinRAR\rar.exe"

    [COLOR=DarkGreen]'// Yedekleme proseduru..[/COLOR]
    Yedek_Proc CurrentProject.FullName, BackUpFile
    
    [COLOR=DarkGreen]'// Veritabanı sıkıştırma ve onarma.. _
        Ver. 2000 - 2002 - 2003 için !!![/COLOR]
    DBEngine.CompactDatabase _
            BackUpFile, tmpBackUpFile
            
   [COLOR=DarkGreen] '// İlk yedeği sil..[/COLOR]
    Kill BackUpFile
    
    [COLOR=DarkGreen]'// Sıkıştırma işlemi için geçici dosyanın _
        adına orjinal ismini ver..[/COLOR]
    While Dir(tmpBackUpFile) = ""
        DoEvents
    Wend

    Name tmpBackUpFile As BackUpFile
    
    [COLOR=DarkGreen]'// WinRAR ile sıkıştırma...[/COLOR]
    Shell WinRARX & _
        " M -ep " & Chr(34) & Left$(BackUpFile, Len(BackUpFile) - 4) & ".rar" & _
                Chr(34) & " " & Chr(34) & BackUpFile & Chr(34)
    MsgBox "Yedekleme işlemi tamamlandı.", vbInformation
End Sub

Sub Yedek_Proc(Kaynak_Dosya As String, Hedef_Dosya As String)
On Error GoTo Hata

[COLOR=DarkGreen] '// 10485760 Byte = 10 MB[/COLOR]
Dim s(10485760) As Byte, X As Long
Dim T() As Byte, i As Integer

    Open Kaynak_Dosya For Binary Access Read As #1
    Open Hedef_Dosya For Binary Access Write As #2
    
    [COLOR=DarkGreen]'// Döngünün kaç kez çalışması gerektiğini _
        toplam dosya boyutunun 10 MB ile bölümün _
        tamsayı değeri ile buluruz.[/COLOR]
    For i = 1 To Int(LOF(1) / 10485760)
        Get #1, , s
        Put #2, , s
    Next
    
    Erase s
    
    [COLOR=DarkGreen]'// Eğer kalan Byte 10 MB dan küçükse _
        kalan Byte aşağıdaki yapı ile eklenir.[/COLOR]
    X = LOF(1) - LOF(2)
    If X > 0 Then
        ReDim T(X) As Byte
        Get #1, , T
        Put #2, , T
        Erase T
    End If
    
Cikis:
    Close #1
    Close #2
    
  Exit Sub
  
Hata: MsgBox "Hata olustu." & Chr(10) & Err.Description
    GoTo Cikis
End Sub
 
Son düzenleme:
Katılım
19 Aralık 2006
Mesajlar
60
Excel Vers. ve Dili
excelxp
Altın Üyelik Bitiş Tarihi
26-09-2020
tesekkürler bu kodu nereye yapıştıracağım birde veri dosyasını programdan nasıl ayırabiliriz yani ayrı data dosyası gibi bir mdb miz olsa
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,345
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
-Kodu module yapıştırdıktan sonra bir buton ile "Yedekle" prosedurunu çağıracaksınız o kadar.

--------------------------------------------------------------------
-MS Access in yerleşik yedekle menusu de aynı işlevi (kendi kopyasını) yapıyor.

Sadece veriyi saklayacaksanız, mdb de depolamak zorunda değilsiniz. Bu, bir text dosyası da olabilir. İstediğiniz böyle birşey mi?
 
Katılım
19 Aralık 2006
Mesajlar
60
Excel Vers. ve Dili
excelxp
Altın Üyelik Bitiş Tarihi
26-09-2020
evet zeki bey öyle birşey de olabilir ama yeniden o yedekten programı kullanabilmek koşuluyla
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,345
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Programı da kullanacaksanız, yukarıda verdiğim yapı ile yedekleyin. Aslında ihtiyacınız olan mdb nin bir kopyası.
 
Katılım
19 Aralık 2006
Mesajlar
60
Excel Vers. ve Dili
excelxp
Altın Üyelik Bitiş Tarihi
26-09-2020
sağolun zeki bey teşekkürler
 
Katılım
16 Kasım 2005
Mesajlar
1,090
Excel Vers. ve Dili
Access 2002
Sayın Zeki Gürsoy,
Kod harika örnek uygulama da öyle peki bu uygulamayı saatte bir kendi kendine çalışabilen ve günün tarihi ve saati saniyesi vs. ayrı ayrı yedekleme yaptırabilirmiyiz bu mümkün mü?

kolay gelsin:)
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,345
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Sayın Zeki Gürsoy,
Kod harika örnek uygulama da öyle peki bu uygulamayı saatte bir kendi kendine çalışabilen ve günün tarihi ve saati saniyesi vs. ayrı ayrı yedekleme yaptırabilirmiyiz bu mümkün mü?

kolay gelsin:)
Elbette mümkün Sayın karaayhan. Saat başı çalışması için Timer ile denetlemeniz gerekecek.

Aktif zaman formatı içinse ben bu şekilde uygun gördüm. İsterseniz farklı format verebilirsiniz.

Kod:
Sub Yedekle()
Dim BackUpFile      As String
Const tmpBackUpFile As String = "C:\tmpBackUp.mdb"

[COLOR=DarkGreen]'// 20080317_190025 formatı..[/COLOR]
BackUpFile = [COLOR=Blue][B]"C:\"[/B][/COLOR] & Format$(Date, "yyyymmdd") & _
                "_" & Format$(Time, "hhmmss") & ".mdb"
    
WinRARX$ = Environ$("ProgramFiles") & "\WinRAR\rar.exe"

.
.
.
.
 
Son düzenleme:
Katılım
16 Kasım 2005
Mesajlar
1,090
Excel Vers. ve Dili
Access 2002
Sayın Zeki Gürsoy,

bu şekilde olunca yedek almıyor kodları debug ettim ancak sorun yok dedi hata nerede?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,345
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Kök belirtmedik, bu nedenle "Belgelerim" e atıyor.

Kod:
[COLOR=Blue][COLOR=Black] BackUpFile = [COLOR=Blue][B]"C:\"[/B][/COLOR] & Format$(Date, "yyyymmdd") & _
                "_" & Format$(Time, "hhmmss") & ".mdb"[/COLOR][/COLOR]
 
Katılım
21 Ekim 2006
Mesajlar
100
Excel Vers. ve Dili
Excel2003 Tr
Sayın Zeki Gürsoy, güzel örnekler verdiniz teşekkürler. Yalnız daha denemedim. Program yedeklemelerde genelde dataları yedekleme ve geri yükleme alışılan ve çok kullanılan bir durum. Ancak acces de yedekleme deyince programın bir kopyası oluşturuluyor. Geri yükleme diye bir mantık yürütülmüyor. Sadece dataları değişik isimlerle veya tarihe göre bir dosyaya kaydedip, sonra istediğimiz yedeği geri yükleyebilsek çok mu zor acaba. Ben bunu veri tabanındaki tabloları başka bir yedek veritabanına otomatik atıp tekrar bir düğme ile yedek veri tabanındaki tabloların datalarını sil-ekle sorgularıyla geri yükleme (dış veri al) yaptırabiliyorum. işe de yarıyor. Ancak merak ettiğim sadece data dosyası oluşturup sonra onu geri yüklemek. Bilmem ne dersiniz. İyi çalışmalar.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,345
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Sayın Zeki Gürsoy, güzel örnekler verdiniz teşekkürler. Yalnız daha denemedim. Program yedeklemelerde genelde dataları yedekleme ve geri yükleme alışılan ve çok kullanılan bir durum. Ancak acces de yedekleme deyince programın bir kopyası oluşturuluyor. Geri yükleme diye bir mantık yürütülmüyor. Sadece dataları değişik isimlerle veya tarihe göre bir dosyaya kaydedip, sonra istediğimiz yedeği geri yükleyebilsek çok mu zor acaba. Ben bunu veri tabanındaki tabloları başka bir yedek veritabanına otomatik atıp tekrar bir düğme ile yedek veri tabanındaki tabloların datalarını sil-ekle sorgularıyla geri yükleme (dış veri al) yaptırabiliyorum. işe de yarıyor. Ancak merak ettiğim sadece data dosyası oluşturup sonra onu geri yüklemek. Bilmem ne dersiniz. İyi çalışmalar.
Dediğiniz gibi yedeklemek, aslında verilerin yedeğini almadır. Ama genelde istendiğinde geri yükleme yapmadan yedek dosyasından çalışarak devam etmek isteniyor.

Yedek verilerini nerde isterseniz orada saklayabilirsiniz. "mdb" de olur, "text" dosyası da.
 
Katılım
16 Kasım 2005
Mesajlar
1,090
Excel Vers. ve Dili
Access 2002
Sayın Zeki Gürsoy format iyi olmuş ancak ilk sorum eksik kaldı sanırım,
sorum şuydu; bir saat arayla kendisini otomatik yedek alsın istiyorum.

Neden= Bir butona basmak bile bazen zor geliyor kullanıcılara yada unutulup günlerce alınmayabiliyor ben kapat düğmesine ekledim ancak gün içinde program bozulunca da bir saat önceki veri kıymete biniyor.....

bu mümkün mü?

kolay gelsin:)
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,345
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Yukarıdaki mesajımda saat başı olup olmadığını denetleyecek Timer ihtiyacınız olduğunu belirtmiştim. ;)

mdb'yi ADO ile dışardan yönetiyorum. Malesef Access kullanıcısı değilim. Bu yüzden formunuzda Timer kullanımını size bırakmak durumundayım.

Belki sürekli çalışan döngü kullanabiliriz Timer yerine. Ama projenizin çalışmasını ne şekilde etkileyecek bilemiyorum.
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Sayın Zeki Gürsoy. Bağlı tabloyu yedeklemek için ne yapılabilir? Bu kodlar içinde çalıştığı veri tabanını yedekliyor. Oysa benim verilerim bağlı olarak başka bir -hatta birkaç- dosyada bulunuyor. Ama ana programın içinden bu kodlarla yapmak güzel olurdu.. Ben şu anda bat uzantılı bir dosyayla bu data dosyalarını bir yedek klasörüne atıyorum. Ama bunu kodlarla yapmanın güzelliği şu: Alındığı andaki tarih ve saati dosya adı olarak atamak. Bu işlemi benim bahsettiğim tarz bağlantılı dosyalarda kullanmak mümkün mü?
 
Üst