Skip to main content

AccessTr.neT


Bağlı Tabloların Bulunduğu Veritabanını Sıkış-onar Yapma Hakkında.

Bağlı Tabloların Bulunduğu Veritabanını Sıkış-onar Yapma Hakkında.

Çözüldü #1
Herkese Merhabalar,

Sitede bulamadım, bağlı tabloların bulunduğu veritabanını, ana veritabanı üzerinden cıkış-onar yapmak istiyorum. 
Mümkünmüdür acaba?

Saygılarımla,
Cevapla
#2
dilerim işinize yarar ama eğer diğer VeriTabanları açıksa sorun çıkarabilir

Visual Basic Code
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

Cevapla
#3
(28/05/2020 16:48)berduş Adlı Kullanıcıdan Alıntı: dilerim işinize yarar ama eğer diğer VeriTabanları açıksa sorun çıkarabilir

Visual Basic Code
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.
Cevapla
#4
Diğer VT açıksa kapatılma kodu eklenebilir belki ama diğer kullanıcı işlem yapıyorsa ne olacak?
Cevapla
#5
(28/05/2020 18:47)berduş Adlı Kullanıcıdan Alıntı: Diğer VT açıksa kapatılma kodu eklenebilir belki ama diğer kullanıcı işlem yapıyorsa ne olacak?
 
 Tek kullanıcı olacağı için o sorun teşkil etmez.
Cevapla
#6
Bence sıkıştır-onar öncesi yedek aldırın.
"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task