26/05/2023, 14:36
Bağlı Tabloların Sıkıştır Ve Onarı
26/05/2023, 18:21
berduş
ç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
ö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
26/05/2023, 21:17
ates2014
Berdus hocam çok teşekkür ederim,
FrmTbl = Me.RecordSource
satırında hata verdi,
bende aşağıdaki kodları pasif edince hata vermeden işlemi bitirdi.
'Option Compare Database
'Option Explicit
FrmTbl = Me.RecordSource
satırında hata verdi,
bende aşağıdaki kodları pasif edince hata vermeden işlemi bitirdi.
'Option Compare Database
'Option Explicit
26/05/2023, 21:35
berduş
(26/05/2023, 21:17)ates2014 yazdı: Option Explicitbu satır fonksiyonda kullanılan her değişkeni kullanmadan önce tanımlamanızı zorunlu kılar
diyelim ki FrmTbl = Me.RecordSource kullanacaksanız bu değişken atamasını kullanmadan önce
dim FrmTbl ile tanımlamanız gerekli
dolayısıyla sadece o satırı pasif yapmanız yeterli
Option Compare Database satırını pasif yapmayın bazı durumlarda o satır olmazsa hatalı sonuçlar üretilebilir
27/05/2023, 23:08
ates2014
Çok tşk ederim berduş hocam...
27/05/2023, 23:34
berduş
rica ederim
iyi çalışmalar)
iyi çalışmalar)