Merhaba arkadaşlar, sıkıştır ve onar konusuna istinaden yeni konu açıyorum,
belgem çalışırken bağlı tablolarımın olduğu belgeyi nasıl sıkıştır ve onar yapabilirim.?
ç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
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
(26/05/2023, 21:17)ates2014 yazdı: [ -> ]Option Explicit
bu 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
Çok tşk ederim berduş hocam...
rica ederim
iyi çalışmalar)