14/07/2023, 08:20
atoykan
Arşivimdeki bir koddan yola çıkarak örneğin bir Access form oluşturun arama kriteri için bir textbox, arama işlemi için bir buton, sonuçları listelemek için iki sutunlu bir listbox ekleyin.
Arama butonunun tıklandığında olayına
bu kod arama kutusuna yazacağınız metni tüm Access dosyalarınızda arar ve bulur ise listboxa dosya adı ve tablo adı olarak işler. Bu örnekten hareket ederek kendi ihtiyaçlarınız çerçevesinde örneğin dosya yolunu seçme, environ ile herhangi bir kullanıcının belgelerinde tarama vs. vs gibi revize edebilirsiniz.
Arama butonunun tıklandığında olayına
Kod:
Dim searchPath As String
Dim searchText As String
Dim dbPath As String
Dim conn As Object
Dim db As Object
Dim tbl As Object
searchText = Me.SearchTextBox.Value
searchPath = "C:\....\....\access dosylarım\" ' Arama yapılacak klasörün yolunu kendiniz belirleyin
Me.SearchResultsListBox.RowSource = "" ' ListBoxı temizler
' Access dosyalarını dolaş aç ve tabloları tara işlemi
dbPath = Dir(searchPath & "*.accdb")
Do While dbPath <> ""
Set conn = CreateObject("ADODB.Connection")
Set db = CreateObject("Access.Application")
db.OpenCurrentDatabase searchPath & dbPath
For Each tbl In db.CurrentDb.TableDefs
If tbl.Attributes = 0 Then ' Geçerli tablo
' Tabloyu aç
db.DoCmd.OpenTable tbl.Name, acViewNormal
' Arama metnine göre sorgu yap
db.DoCmd.FindRecord searchText, acAnywhere, False, acSearchAll, True, acCurrent, False
' Metnin bulunduğu veri varsa ListBox'a dosya adı ve tablo adını ekle
If Not db.DoCmd.NoMatch Then
Me.SearchResultsListBox.AddItem dbPath & ";" & tbl.Name
End If
db.DoCmd.Close acTable, tbl.Name, acSaveNo
End If
Next tbl
db.CloseCurrentDatabase
db.Quit
dbPath = Dir ' Bir sonraki Access dosyasını al
Loop