[MAKRO] Dosya yedekleme BackUp, Frontend and Backend
#1
Arkadaslar,

asagidaki kodu hocalarimiz güzel bir sekilde hazirlamislar, faidelenebiliyoruz, tesekkür ederim. Bu kod üzerine iki sorum olacak.

1. Dosyayi güncel tarihe göre yedeklemesi icin, otomatik tarih kodunu nasil ekleriz. Su kodu (= CurrentProject.Path & "\BackUp_" & Format(Date, "yyyyMMdd") & ".accdb") eklemeye calistim ama hata veriyor.

2. Bu kod üzerinde calistigim "ÖnDosya" yi yedekliyor. Ama benim birtanede "ArkaDosyam" var. Arka dosyayida ayni anda yedekleye bilirmiyiz?

Visual Basic
  1. Private Sub yedekleme_Click()
  2. 'BackUp access komprimieren 1. Teil
  3. Const BackUpFile As String = "F:\BackUp.accdb"
  4. Const tmpBackUpFile As String = "F:\tmpBackUp.accdb"
  5.  
  6. WinRARX$ = Environ$("ProgramFiles") & "\WinRAR\rar.exe"
  7.  
  8. '// Yedekleme proseduru..
  9. Yedek_Proc CurrentProject.FullName, BackUpFile
  10.  
  11. '// Veritabani sikistirma ve onarma.. _
  12.   Ver. 2000 - 2002 - 2003 için !!!
  13. DBEngine.CompactDatabase _
  14. BackUpFile, tmpBackUpFile
  15.  
  16. '// Ilk yedegi sil..
  17. Kill BackUpFile
  18.  
  19. '// Sikistirma islemi için geçici dosyanin _
  20.   adina orjinal ismini ver..
  21. While Dir(tmpBackUpFile) = ""
  22. DoEvents
  23. Wend
  24. '
  25. Name tmpBackUpFile As BackUpFile
  26.  
  27. '// WinRAR ile sikistirma...
  28. Shell WinRARX & _
  29. " M -ep " & Chr(34) & Left$(BackUpFile, Len(BackUpFile) - 4) & ".rar" & _
  30. Chr(34) & " " & Chr(34) & BackUpFile & Chr(34)
  31. MsgBox "Yedekleme islemi tamamlandi.", vbInformation
  32. End Sub
  33. Sub Yedek_Proc(Kaynak_Dosya As String, Hedef_Dosya As String)
  34. 'BackUp access komprimieren 2. Teil
  35. On Error GoTo Hata
  36. '// 10485760 Byte = 10 MB
  37. Dim s(10485760) As Byte, X As Long
  38. Dim T() As Byte, i As Integer
  39.  
  40. Open Kaynak_Dosya For Binary Access Read As #1
  41. Open Hedef_Dosya For Binary Access Write As #2
  42.  
  43. '// Döngünün kaç kez çalismasi gerektigini _
  44.   toplam dosya boyutunun 10 MB ile bölümün _
  45.   tamsayi degeri ile buluruz.
  46. For i = 1 To Int(LOF(1) / 10485760)
  47. Get #1, , s
  48. Put #2, , s
  49. Next
  50.  
  51. Erase s
  52.  
  53. '// Eger kalan Byte 10 MB dan küçükse _
  54.   kalan Byte asagidaki yapi ile eklenir.
  55. X = LOF(1) - LOF(2)
  56. If X > 0 Then
  57. ReDim T(X) As Byte
  58. Get #1, , T
  59. Put #2, , T
  60. Erase T
  61. End If
  62.  
  63. Cikis:
  64. Close #1
  65. Close #2
  66.  
  67. Exit Sub
  68.  
  69. Hata: MsgBox "Hata olustu." & Chr(10) & Err.Description
  70. GoTo Cikis
  71. End Sub



Slm
kaleci



  Alıntı
Bu mesajı beğenenler:
#2
Dim oFSO As Object
Dim strDestination As String
Dim yol As String
yol = CurrentProject.path
strDestination = yol & "\yedek" & Format(Now(), "yyyymmdd") & ".accdb"

DBEngine.Idle

Set oFSO = CreateObject("Scripting.FileSystemObject")
oFSO.CopyFile CurrentDb.Name, strDestination
Set oFSO = Nothing

Name strDestination As strDestination & ".cpk"
DBEngine.CompactDatabase strDestination & ".cpk", strDestination
Kill strDestination & ".cpk"
MsgBox ("YEDEKLEME TAMAMLANDI!!!")



  Alıntı
Bu mesajı beğenenler:
#3
Sayin kaan2000,

tesekkür ederim kod güzel calisiyor.

Sayin kaan2000 sorunun ikinci kismi icin bir öneriniz var mi?. Ön dosyayi yedekleyebiliyoruz. Birde arka dosyayi yedekleyebilirsek güzel olacak, ileride arka dosya bozulacak olursa öndosyada calismaz. Cünkü ikisi birbirine bagli. Arka dosyayi da ÖnDosyaya koydugum bir Komut dügmesi ile ayni anda yedekleyebilirmiyiz.

Kod ArkaDosyada, ArkaDosya ismi = KfzPersonenDB,
Tablo ismi = KfzPersDE
Sifre = test
Alıntı: Public Function KfzPersonenDB() As String
'Verbindungherstellen zwieschen Frontend und Backendordner 1. Teil
Dim yol As String
yol = CurrentProject.Path
KfzPersonenDB = CurrentProject.Path & yol & "\KfzPersonenDB.accdb"
End Function
Public Function KfzPersonenDBtblKfzPersDE() As String
'Verbindungherstellen zwieschen Frontend und Backendordner 2. Teil
KfzPersonenDBtblKfzPersDE = "select * from tblKfzPersDE in '' [ms access;pwd=test;database=" & KfzPersonenDB() & "]"
End Function

ÖnDosyadaki SQL Kodu
Alıntı: SELECT AbfKfzPersDE.NameVorname1 AS NameVorname1, AbfKfzPersDE.Firma AS Firma, AbfKfzPersDE.KFZ AS KFZ, AbfKfzPersDE.Datum1 AS Datum1, AbfKfzPersDE.ID AS ID, *
FROM tblKfzPersDE AS AbfKfzPersDE IN '' [ms access;pwd=test;database=F:\KfzPersonenDB.accdb]
ORDER BY AbfKfzPersDE.Datum1 DESC;

Slm
kaleci



  Alıntı
Bu mesajı beğenenler:
#4
Dim asildosya, kopyadosya, dosya As String
asildosya= 'buraya diğerveritabanının bulunduğu yolu yazacaksın
kopya dosya= "D:\klasör\"&yedek.accdb (buraya göndereceğin yolu yazacaksın)

Dim kaan
Set kaan = CreateObject("Scripting.FileSystemObject")
kaan.CopyFile asildosya, kopyadosya
End Sub



  Alıntı
Bu mesajı beğenenler:
#5
Sayin kaan2000,

cok mükemmel bir is yaptiniz ve yardimda bulundunuz. Sahsiniza tesekkür ederim.

Slm
kaleci



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Aktarım Yaparken Dosya Adını Değiştirme zimbit 4 113 04-02-2024, 00:42
Son Mesaj: zimbit
  [FORM] form klasör içinde dosya kontrolü obaysal42 4 2.181 29-12-2023, 10:24
Son Mesaj: burhanb
  [VBA] Dosya Yolu Yazdırma benuva 2 119 26-11-2023, 19:06
Son Mesaj: benuva
  [VBA] Dosya Yolu Boş Ise Hata Alıyorum serdem48 4 118 26-10-2023, 14:11
Son Mesaj: serdem48
  Toplu .csv, .xlsx, .xls, .xml Dosya Aktarımı Yapmak adnnfrm 2 242 22-06-2023, 19:04
Son Mesaj: dsezgin
access-sql-18 Access.db , Yüksek Dosya Boyutu. BeyTor 9 350 13-05-2023, 22:43
Son Mesaj: BeyTor
  [VBA] Bulut Yedekleme hedefkaya 9 586 30-01-2023, 13:17
Son Mesaj: beab05
  Başlıkları Aynı Olmayan EXcel Tablosunu Dosya Bul Butonu Ile Accese Veri Almak snapper 1 189 17-12-2022, 03:13
Son Mesaj: dsezgin

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 2 Ziyaretçi