ListBoxta Acces Veri Tabanında Dinamik Sorgulama

Astalavista58

Altın Üye
Katılım
20 Ocak 2020
Mesajlar
242
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
20-02-2025
Merhabalar, linkteki dosyamda Acces veri tabanlı UserForm'um var.
Formda TextBox'a girdiğim değeri ListBox'ta içerir mantığı ile dinamik olarak sorgulamasını istiyorum.
Örneğin TextBox'a girdiğim değeri "SİCİLDE" arayacak, "123" değerini içeren verileri ListBox'ta görüntüleyecek.
Veri tabanı Acces olunca kodu yazamadım. Yardımcı olabilr miisiniz


 
Katılım
2 Temmuz 2014
Mesajlar
145
Excel Vers. ve Dili
2021 Türkçe, 64bit
öncelikle recordset oluşturma yordamınızı biraz değiştirdim. ihtiyaca göre tüm koşul parametre olarak gönderilebiliyor.
o nedenle önce cagir yordamını aşağıdaki gibi yeniden düzenleyin
Kod:
Sub cagir(Optional xKriter As String)

Dim baglan As New Connection
Dim rs As New Recordset
Dim dbPath As String
If Len(xKriter & "") > 0 Then xKriter = " where " & xKriter
dbPath = ThisWorkbook.Path & "\db1.accdb"
baglan.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath
rs.Open "select * from Tablo1" & xKriter, baglan, adOpenKeyset, adLockPessimistic

With UserForm1.ListBox1
.ColumnCount = 6
.Column = rs.GetRows
End With

rs.Close
baglan.Close
End Sub
sonra ise ister bir düğmeye isterseniz de
TextBox1_Change olayına (yani TextBox1'in değiştiğinde olayına) aşağıdaki kodu ekleyin
Kod:
cagir "sicil like '%" & TextBox1.Text & "%'"
kodlarda anlamadığınız yerleri sormaktan çekinmeyin)
Not : Sorgularla ilgili bir araştırma yapmanız yada access sorgu oluşturucuyla denemeler yapmanız ilerde sizin için çok faydalı olacaktır.
dilerim işinize yarar
iyi çalışmalar
 

Astalavista58

Altın Üye
Katılım
20 Ocak 2020
Mesajlar
242
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
20-02-2025
Sayın hocam çok teşekkür ediyorum vallaha Allah razı olsun sizden. Excel VBA konusuna hakimiyetim var ancak Acces ile bağlantılı bir program yapmaya çalışıyorum SQL'de biraz sıkıntı yaşıyorum. Sürekli bir problem yaşıyorum, bir kısmını kendim araştırarak çözümlüyorum, bir kısmına sizin gibi Korhan hocam gibi değerli insanların yardımıyla cözmeye çalışıyorum. Tekrardan çok teşekkür ederim.

baglan ve rs' i Nothing yapmanın bir mantığı yok o zaman hocam doğru mu
 
Katılım
2 Temmuz 2014
Mesajlar
145
Excel Vers. ve Dili
2021 Türkçe, 64bit
Yordam icinde tanımlanmış değişkenler yordam bazlı çalışır, yordam sonlaninca sonlanır. Ama yine de her ihtimale karşı sonlandırmayı tercih edenler oluyor.
 

Astalavista58

Altın Üye
Katılım
20 Ocak 2020
Mesajlar
242
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
20-02-2025
Yordam icinde tanımlanmış değişkenler yordam bazlı çalışır, yordam sonlaninca sonlanır. Ama yine de her ihtimale karşı sonlandırmayı tercih edenler oluyor.
Kıymetli bilgilendiriniz için teşekkür ederim
 

Astalavista58

Altın Üye
Katılım
20 Ocak 2020
Mesajlar
242
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
20-02-2025
Hocam bir şey daha sorabilir miyim, örneğin;
TextBox'a önce 1, sonra 2 değerini giriyorum yani 12,
Ancak 12 değeri olmamasına rağmen içerisinde 1 geçtiği içini listboxta listeliyor. Bunu engelleyebilir miyiz
 
Katılım
2 Temmuz 2014
Mesajlar
145
Excel Vers. ve Dili
2021 Türkçe, 64bit
Öyle birşey olmaması gerek, ben kaç defa denemiştim.
listboxa veri eklemek icin Column = rs.GetRows kodunu kullanıyorsunuz değil mi
 

Astalavista58

Altın Üye
Katılım
20 Ocak 2020
Mesajlar
242
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
20-02-2025
Doğrudur o kodu kullanıyorum
 
Katılım
2 Temmuz 2014
Mesajlar
145
Excel Vers. ve Dili
2021 Türkçe, 64bit
On error... gibi bir satır var mı kodda
Çünkü recordsette veri olmadığı zaman getrows hata verir siz hatadan bahsetmemissiniz
 

Astalavista58

Altın Üye
Katılım
20 Ocak 2020
Mesajlar
242
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
20-02-2025
Kod:
Private Sub TextBox18_Change()
    Dim baglan As New Connection
    Dim rs As New Recordset
    Dim dbPath As String

    dbPath = ThisWorkbook.Path & "\db.accdb"
    baglan.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath

    rs.Open "SELECT KİMLİK, SİCİL, RÜTBESİ, ADI, SOYADI, BİRİMİ, TESHİS, HASTALIGINDİLİMİ, YAPILANİSLEMİNASAMASI, YAPILACAKİSLEM, Format(HASTANEYESEVKTARİHİ, 'dd.mm.yyyy') AS TarihFormat, ACIKLAMA FROM takiplipersonel WHERE SİCİL LIKE '" & TextBox18.Text & "%'", baglan, adOpenKeyset, adLockPessimistic

    If rs.RecordCount > 0 Then
        With anaForm.ListBox3
            .ColumnCount = 12 ' Toplam 12 sütun
            .ColumnWidths = "25;40;70;80;70;100;180;50;190;120;70;80" ' Sütun genişlikleri özelleştirilebilir
            .Column = rs.GetRows
        End With
    End If

    rs.Close
    baglan.Close
End Sub
Kod bu şekilde,
 

Astalavista58

Altın Üye
Katılım
20 Ocak 2020
Mesajlar
242
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
20-02-2025
Hocam vallaha bilmiyorum ben sizin hakkınızı nasıl ödeyeceğim. Çok teşekkür ederim. Sayenizde çok şey öğrendim
 
Üst