sql ile birden fazla kelime arama

sevensuleyman

Altın Üye
Katılım
9 Kasım 2012
Mesajlar
198
Excel Vers. ve Dili
office 2010
Altın Üyelik Bitiş Tarihi
08-12-2027
merhaba;
excell üzerinde kullandıgım
Kod:
SqlText = "SELECT STOK_KODU,STOK_ADI, SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,KULL1S,ALIS_FIAT3,BAKIYE_3,BAKIYE_1,KULL2N,BAKIYE_2,URETICI_KODU,SATICI_ISIM,KOD5_ACIKLAMA,BARKOD1,KULL1S,BILGI,KULL1N FROM SKM_YPSTOKBAKIYERAPOR WHERE GRUP_KODU='" & Sayfa8.Cells(3, 2).Value & "' AND STOK_ADI LIKE DBO.TR2UNC(N'%" & Sayfa8.Cells(3, 4).Value & "%' )AND KULL1N <>'3' ORDER BY BAKIYE_2 DESC"
veri getirdiğim böyle bir sql kodum mevcut. stok adı ile aramayı geliştirmek istiyorum. birden fazla kelime ile arama yapmak istiyorum. internette şöyle bir kod buldum fakat uyarlayamadım. üstadların yardımını bekliyorum şimdiden teşekkürler





Kod:
S.Delimiter     :='+';

 function ArananKelimeler(TAlan,Cumle,and_or:String):string;
 var
   S:TStringList;
   i:Integer;
 begin
   S :=TStringList.Create;
   try
     S.Delimiter     :=' ';    // Kelimeler Boşluk karakterine göre ayrıştırılacaktır.
     S.DelimitedText :=Cumle;  // kelimelere ayrılacak yazımız.
     for I := 0 to s.Count-1 do // Kaç adet kelime var ise döngü ile sorgu cümlemize ekliyoruz
     begin
       if i<>S.Count-1 then // Listedeki son kelime olup olmadığını kontrol ediyoruz.
       Result:=Result+TAlan+' like %'+S.Strings[i]+'% '+and_or+#13#10  //Son kelime değil ise
       else // parametredeki And veya OR ifadesini ekliyoruz.
       Result:=Result+TAlan+' like %'+S.Strings[i]+'% '; // Son kelimemizden sonra AND,OR eklemesi yapmıyoruz.
     end;
   finally
     S.Free; // Hafıza kaçağı olmaması için..
   end;
 end;
Begin
 ShowMessage('Select * From DOSYALAR Where  '+
             ArananKelimeler('ACIKLAMA ',Edit1.Text,'and') );
End;
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
sql de IN kullanmalısınız.

Örneğin WHERE [IL] IN ('ANKARA','İSTANBUL','SAMSUN')
gibi
 

sevensuleyman

Altın Üye
Katılım
9 Kasım 2012
Mesajlar
198
Excel Vers. ve Dili
office 2010
Altın Üyelik Bitiş Tarihi
08-12-2027
Merhaba,
sql de IN kullanmalısınız.

Örneğin WHERE [IL] IN ('ANKARA','İSTANBUL','SAMSUN')
gibi

cvabnıız içni teşekkürler ama kelimleri boşluklu olarrak yazacagım hücreye içinde geçen kelimeri bulup gelecek
örnek cümle = "toyata arka stop" cümlesini "stop toyata" şeklinde arama yaptıgımda bulmuyor. bunu çözmem gerekiyor. kelime sıralamaları karışık olabiliyor. içersinde kelimler geçiyorsa bulacak. bu şekilde düzenleyebilirsrnizço kseivinirim.





Kod:
Aplication.Calculation = xlManual
 
  Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim rsA As New ADODB.Recordset
    Dim rsB As New ADODB.Recordset
    Dim rsC As New ADODB.Recordset
    Dim rsD As New ADODB.Recordset
    Dim i As Long
    Dim X As Long
    Dim Z As Long
    Dim Y As Long

    Dim SqlText As String
    Dim SqlTexta As String
    Dim SqlTextb As String
    Dim SqlTextc As String
    Dim SqlTextD As String
 
    With conn
    .Provider = "sqloledb"
    .CommandTimeout = 1500
    .ConnectionString = "Data Source=" & Sheet1.Cells(1, 2).Value & ";USER ID=" & Sheet1.Cells(2, 2).Value & ";PASSWORD=" & Sheet1.Cells(3, 2).Value & ";AUTO TRANSLATE=FALSE"
    .Open
    .DefaultDatabase = "" & Sheet1.Cells(4, 2).Value & ""
 
    End With
 
    SqlText = "SELECT STOK_KODU,STOK_ADI, SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,KULL1S,ALIS_FIAT3,BAKIYE_3,BAKIYE_1,KULL2N,BAKIYE_2,URETICI_KODU,SATICI_ISIM,KOD5_ACIKLAMA,BARKOD1,KULL1S,BILGI,KULL1N FROM SKM_YPSTOKBAKIYERAPOR WHERE GRUP_KODU='" & Sayfa8.Cells(3, 2).Value & "' AND STOK_ADI LIKE DBO.TR2UNC(N'%" & Sayfa8.Cells(3, 4).Value & "%' )AND KULL1N <>'3' ORDER BY BAKIYE_2 DESC"

'    If Sayfa8.Cells(3, 2).Value <> "" Then
'
'     SqlText = SqlText + " AND GRUP_KODU= '" & Sayfa8.Cells(3, 2).Value & "' "
'
'    End If
'
'    If Sayfa8.Cells(4, 2).Value <> "" Then
'
'     SqlText = SqlText + " AND KOD_1= '" & Sayfa8.Cells(4, 2).Value & "' "
'
'    End If
'
'    If Sayfa8.Cells(5, 2).Value <> "" Then
'
'     SqlText = SqlText + " AND KOD_2= '" & Sayfa8.Cells(5, 2).Value & "' "
'
'    End If
'
'
'    If Sayfa8.Cells(3, 4).Value <> "" Then
'
'     SqlText = SqlText + " AND DEPO_KODU= '" & Sayfa8.Cells(3, 4).Value & "' "
'
'    End If
'
'    If Sayfa8.Cells(4, 4).Value <> "" Then
'
'     SqlText = SqlText + " AND SATICI_ISIM= '" & Sayfa8.Cells(4, 4).Value & "' "
'
'    End If

    rs.Open SqlText, conn, adOpenStatic, adLockReadOnly
      Sayfa8.Range("A8:z80000").ClearContents
    Sayfa8.Activate
 
    i = 8
    X = 8
    Z = 8
    Y = 8
  
    Do While Not rs.EOF

        Sayfa8.Cells(i, 1).Value = rs(0)
        Sayfa8.Cells(i, 2).Value = rs(1)
        Sayfa8.Cells(i, 3).Value = rs(2)
        Sayfa8.Cells(i, 4).Value = rs(3)
        Sayfa8.Cells(i, 5).Value = rs(4)
        Sayfa8.Cells(i, 6).Value = rs(5)
        Sayfa8.Cells(i, 7).Value = rs(6)
        Sayfa8.Cells(i, 8).Value = rs(7)
        Sayfa8.Cells(i, 9).Value = rs(8)
        Sayfa8.Cells(i, 10).Value = rs(9)
    Sayfa8.Cells(i, 11).Value = rs(10)
 Sayfa8.Cells(i, 12).Value = rs(11)
      Sayfa8.Cells(i, 13).Value = rs(12)
      Sayfa8.Cells(i, 14).Value = rs(13)
       Sayfa8.Cells(i, 15).Value = rs(14)
       Sayfa8.Cells(i, 16).Value = rs(15)
      Sayfa8.Cells(i, 17).Value = rs(16)
      Sayfa8.Cells(i, 18).Value = rs(17)
      Sayfa8.Cells(i, 19).Value = rs(18)
      Sayfa8.Cells(i, 20).Value = rs(19)
      
         rs.MoveNext
         i = i + 1
    Loop
    
    '''''''''''''''''''
    conn.Close
    Set rs = Nothing
    Set conn = Nothing

Application.Calculation = xlAutomatic
 
'Range("A7:S" & Cells(Rows.Count, 1).End(3).Row).Sort Range("J1"), Order1:=xlDescending, Header:=xlYes
 
Range("A8").Select

MsgBox "İşlem Tamamlandı", vbInformation, "Sonuç"
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
örnek cümle = "toyata arka stop" cümlesini "stop toyata" şeklinde arama yaptıgımda bulmuyor.
Merhaba, Necdet Beyin önerisi eşitlik olduğu durumlarda geçerlidir. İstediğiniz şey FULL_TEXT_SEARCH sanırım. Açıkçası nasıl aktif edildiği yada kullanıldığı hakkında tam bilgim yok, çünkü hiç ihtiyaç duymadım.
Ama o olmadan da derme çatma bir şeyler yapılabilir (or veya and ile test edersiniz) şunun gibi:

SQL:
where
   grup_kodu like '%toyota%' or
   grup_kodu like '%arka%' or
   grup_kodu like '%stop%'
.
 
Son düzenleme:

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
Merhaba benimde ihtiyacım olmuştu bu şekilde sorgu işlemi . Örnek olarak arko,nivea,axe ile başlayanları getiriyordu. Virgül ile ayırılanları arıyordu

Kod:
metin = UserForm1.TextBox1.Text
    aranan = ","
    a = Len(metin) - Len(WorksheetFunction.Substitute(metin, aranan, ""))



    If a = 0 Then
        sql3 = "STK.MALINCINSI LIKE '" & UserForm1.TextBox1.Text & "%'"
    Else

        For b = 0 To a

            sql2 = "  STK.MALINCINSI LIKE '" & Split(metin, aranan)(b) & "%'"
            sql3 = sql3 & sql2 & "  OR "

        Next b
     
    End If


    If a = 0 Then
       stkmalıncinsi = sql3
    Else
        stkmalıncinsi = Left(sql3, Len(sql3) - 4)
    End If




where kullanımı  (" & stkmalıncinsi & ")
 

sevensuleyman

Altın Üye
Katılım
9 Kasım 2012
Mesajlar
198
Excel Vers. ve Dili
office 2010
Altın Üyelik Bitiş Tarihi
08-12-2027
Merhaba benimde ihtiyacım olmuştu bu şekilde sorgu işlemi . Örnek olarak arko,nivea,axe ile başlayanları getiriyordu. Virgül ile ayırılanları arıyordu

Kod:
metin = UserForm1.TextBox1.Text
    aranan = ","
    a = Len(metin) - Len(WorksheetFunction.Substitute(metin, aranan, ""))



    If a = 0 Then
        sql3 = "STK.MALINCINSI LIKE '" & UserForm1.TextBox1.Text & "%'"
    Else

        For b = 0 To a

            sql2 = "  STK.MALINCINSI LIKE '" & Split(metin, aranan)(b) & "%'"
            sql3 = sql3 & sql2 & "  OR "

        Next b
    
    End If


    If a = 0 Then
       stkmalıncinsi = sql3
    Else
        stkmalıncinsi = Left(sql3, Len(sql3) - 4)
    End If




where kullanımı  (" & stkmalıncinsi & ")
çok teşekkürler fakat çok kod bilgim yok 4 nuamralıda koda nasıl uyarlayabilirim .bilginiz vrsa uyarlayabilirseniz çok sevinirim
 
Üst