Skip to main content

AccessTr.neT


Bağlı Tabloların Sıkıştır Ve Onarı

Bağlı Tabloların Sıkıştır Ve Onarı

#2
çalışmanız hata veriyor çünkü bağlı tablodan veri alan bir form kullanıyorsunuz
önce ilgili formun kayıt kaynağını boşaltmanız gerekiyor
FrmTbl = Me.RecordSource <== bu kod ile formunuzun kayıt kaynağı değişkene atanacak
Me.RecordSource = ""<== bu kod ile formunuzun kayıt kaynağı boşaltılıp bağlantı kesilecek
..........
Me.RecordSource = FrmTbl <== bu kod ile formunuzun kayıt kaynağı tekrar bağlanacak

Private Sub Komut11_Click()
Dim TblAdi As TableDef
Dim BglVtAdr, DzBglVtAdr As String
Dim BglVt As Object
DzBglVtAdr = ""
FrmTbl = Me.RecordSource
Me.RecordSource = ""


'Veritabanındaki Tüm Bağlı tabloların Adresini alır ve mtin olarak kaydeder
For Each TblAdi In CurrentDb.TableDefs
TmpAdres = TblAdi.Connect

x = InStr(1, TmpAdres, ";DATABASE=")
TmpAdres = Mid(TmpAdres, 11)
If x = 1 And 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) '
AciksaKapat CStr(BglVtAdr(x))

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"
If Dir(BglVtAdr(x) & ".BCK") <> "" Then Kill BglVtAdr(x) & ".BCK"

Next x
Me.RecordSource = FrmTbl

MsgBox "Sıkıştır onar bitti"
End Sub
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
RE: Bağlı Tabloların Sıkıştır Ve Onarı - Yazar: berduş - 26/05/2023, 18:21
Task