ö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