Like İle Filtreleme Problemi

07/05/2020, 16:53

accessman

iyi günler malumunuz 
Like "*" & metin & "*"
ile arama yaparken mesela ismi "Mehmet Yıldırım" olan birisini
meh*yıl
şeklinde arayabiliyoruz. Ama bazen isim ile soyismi yerini değiştirerek "Yıldırım Mehmet" yazılabiliyorlar bu durumda doğru sonuç vermiyor 
veya hastanın 
Hipertansiyon, Diabet, Astım
var diğer hastanın ise 
Hipertansiyon, Astım, Diabet
bir başkasının ise
Astım, Diabet, Hipertansiyon  u var. hepsinde aynı hastalıklar var ama yerleri farklı sırada yazılmış

bunu ararken mesela 
hip*as*dia
yazdığımda hastalıklar hangi sırada yazıldığı önemli olmadan her üç hastayıda bize listelese
bunu nasıl yazmak lazım
07/05/2020, 16:59

POWER

Örnek ekleyiniz...
07/05/2020, 17:19

accessman

örnek ektedir. burada virgül ile ayrılmış hastalıklar her seferinde farklı sırada yazılabiliyor
nasıl yaparsak hangi sırada olduğu farketmeden filtreleyebliriz
07/05/2020, 18:14

POWER

Ekteki örnek işinizi görüyormu ? İncelermisiniz...
07/05/2020, 18:43

berduş

aramalar arasına 1 boşluk bırakmalısınız buton kodu
Dim AraStr() As String
Dim SqlStr As String
Dim xBit, xBas As Integer

Me.Metin5.Value = Trim(Me.Metin5.Value)
If Len(Me.Metin5 & "") = 0 Then Exit Sub

AraStr = Split(Me.Metin5, " ")
xBit = UBound(AraStr)
xBas = LBound(AraStr)
LstSql = "SELECT kron.kronik FROM kron GROUP BY kron.kronik, kron.[kronik] having  "
For x = xBas To xBit
    SqlStr = SqlStr & " and [kronik] like '*" & AraStr(x) & "*'"
Next x
   LstSql = LstSql & Mid(SqlStr, 5)
   Me.Liste1.RowSource = LstSql

mesela alerji ve depresyon için
Kod:
erj es
yazmanız yeterli
08/05/2020, 12:12

accessman

(07/05/2020, 18:14)POWER yazdı: Ekteki örnek işinizi görüyormu ? İncelermisiniz...
elinize sağlık çok güzel olmuş

(07/05/2020, 18:43)berduş yazdı: aramalar arasına 1 boşluk bırakmalısınız buton kodu
Dim AraStr() As String
Dim SqlStr As String
Dim xBit, xBas As Integer

Me.Metin5.Value = Trim(Me.Metin5.Value)
If Len(Me.Metin5 & "") = 0 Then Exit Sub

AraStr = Split(Me.Metin5, " ")
xBit = UBound(AraStr)
xBas = LBound(AraStr)
LstSql = "SELECT kron.kronik FROM kron GROUP BY kron.kronik, kron.[kronik] having  "
For x = xBas To xBit
    SqlStr = SqlStr & " and [kronik] like '*" & AraStr(x) & "*'"
Next x
   LstSql = LstSql & Mid(SqlStr, 5)
   Me.Liste1.RowSource = LstSql

mesela alerji ve depresyon için
Kod:
erj es
yazmanız yeterli
ellerinize sağlık çok güzel çalışıyor