28/05/2020, 14:21
Bağlı Tabloların Bulunduğu Veritabanını Sıkış-onar Yapma Hakkında.
28/05/2020, 16:48
berduş
dilerim işinize yarar ama eğer diğer VeriTabanları açıksa sorun çıkarabilir
Dim TblAdi As TableDef
Dim BglVtAdr, DzBglVtAdr As String
DzBglVtAdr = ""
'Veritabanındaki Tüm Bağlı tabloların Adresini alır ve mtin olarak kaydeder
For Each TblAdi In CurrentDb.TableDefs
TmpAdres = TblAdi.Connect
TmpAdres = Mid(TmpAdres, 11)
If Len(TmpAdres & "") > 0 And InStr(1, DzBglVtAdr, TmpAdres) = 0 Then DzBglVtAdr = DzBglVtAdr & ";" & TmpAdres
Next TblAdi
BglVtAdr = Split(DzBglVtAdr, ";") 'farklı Vtlerden bağlanmış tablolar varsa tüm diğer VTlerin adlarını diziye aktarır
For x = 1 To UBound(BglVtAdr) '
DBEngine.CompactDatabase BglVtAdr(x), BglVtAdr(x) & "TMP"
If Dir(BglVtAdr(x) & ".BCK") <> "" Then Kill BglVtAdr(x) & ".BCK"
Name BglVtAdr(x) As BglVtAdr(x) & ".BCK"
Name BglVtAdr(x) & "TMP" As BglVtAdr(x)
If Dir(BglVtAdr(x) & "TMP") <> "" Then Kill BglVtAdr(x) & "TMP"
Next x
End Sub
28/05/2020, 18:31
tekinuygun
(28/05/2020, 16:48)berduş yazdı: dilerim işinize yarar ama eğer diğer VeriTabanları açıksa sorun çıkarabilir
Dim TblAdi As TableDef
Dim BglVtAdr, DzBglVtAdr As String
DzBglVtAdr = ""
'Veritabanındaki Tüm Bağlı tabloların Adresini alır ve mtin olarak kaydeder
For Each TblAdi In CurrentDb.TableDefs
TmpAdres = TblAdi.Connect
TmpAdres = Mid(TmpAdres, 11)
If Len(TmpAdres & "") > 0 And InStr(1, DzBglVtAdr, TmpAdres) = 0 Then DzBglVtAdr = DzBglVtAdr & ";" & TmpAdres
Next TblAdi
BglVtAdr = Split(DzBglVtAdr, ";") 'farklı Vtlerden bağlanmış tablolar varsa tüm diğer VTlerin adlarını diziye aktarır
For x = 1 To UBound(BglVtAdr) '
DBEngine.CompactDatabase BglVtAdr(x), BglVtAdr(x) & "TMP"
If Dir(BglVtAdr(x) & ".BCK") <> "" Then Kill BglVtAdr(x) & ".BCK"
Name BglVtAdr(x) As BglVtAdr(x) & ".BCK"
Name BglVtAdr(x) & "TMP" As BglVtAdr(x)
If Dir(BglVtAdr(x) & "TMP") <> "" Then Kill BglVtAdr(x) & "TMP"
Next x
End Sub
Cevabınız için teşekkür ederim.
Data veritabanı açık iken sorun oluyor. (..... Makineside ‘Admin’ kullanıcı tarafından açılmış olan bir veritabanı açmayı denediniz. Veritabanı kullanılabilir hale geldiğinde yeniden deneyiniz.)
Data veritabanı kapalı ise sıkıştır-onar işlemini yapıyor.
İşlem bittiğinde BCK uzantılı dosya ilgili klasörde kalıyor, silmiyor.
28/05/2020, 18:47
berduş
Diğer VT açıksa kapatılma kodu eklenebilir belki ama diğer kullanıcı işlem yapıyorsa ne olacak?
28/05/2020, 18:50
tekinuygun
28/05/2020, 20:58
ozanakkaya
Bence sıkıştır-onar öncesi yedek aldırın.