Bu sıkıntıyı aşmamda benden sabrını esirgemeyen mrmcop'a çok teşekkür ederim. Aşağıdaki alıntılarda yine kendisinin bana gönderdiklerinden...
Birden fazla kullanılıyorsa eğer, mesela vereceğim örnek 10 alanlı..
İlk yapılması gereken bir Procedure tanımlamak.Yani;
Kod: Tümünü seç
type
........
Procedure SorguHazirla( AlanAdı1, AlanAdı2, AlanAdı3, AlanAdı4, AlanAdı5, AlanAdı6, AlanAdı7, AlanAdı8, AlanAdı9, AlanAdı10: String
gibi..
tanımlanan bu procedureden sonra derlemeye geldi sıra
Kod: Tümünü seç
Procedure Tform3.SorguHazirla( AlanAdı1, AlanAdı2, AlanAdı3, AlanAdı4, AlanAdı5, AlanAdı6, AlanAdı7, AlanAdı8, AlanAdı9, AlanAdı10: String);
begin
AlanAdı1 := Trim(Adı1);// Bu alanlara farklı isimlerde verebilirsiniz
AlanAdı2 := Trim(Adı2);//Yada alan adıyla aynı ismi de yazabilirsiniz
AlanAdı3 := Trim(Adı3);
AlanAdı4 := Trim(Adı4);
AlanAdı5 := Trim(Adı5);
AlanAdı6 := Trim(Adı6);
AlanAdı7 := Trim(Adı7);
AlanAdı8 := Trim(Adı8);
AlanAdı9 := Trim(Adı9);
AlanAdı10 := Trim(Adı10);
Query1.Active := False;
Query1.SQL.Clear;
Query1.SQL.Add('Select * from giris');
Query1.SQL.Add('Where (1=1)');
If Adı1 <> ''
then Query1.SQL.Add( 'AND (LOWER(Adı1) Like LOWER("%'+AlanAdı1+'%" ))' );
If Adı2 <> ''
then Query1.SQL.Add( 'AND (LOWER(Adı2) Like LOWER("%'+AlanAdı2+'%"))' );
If Adı3<> ''
then Query1.SQL.Add( 'AND (LOWER(Adı3) Like LOWER("%'+AlanAdı3+'%" ))' );
If Ameliyat <> ''
then Query1.SQL.Add( 'AND (LOWER(Adı4) Like LOWER("%'+AlanAdı4+'%"))');
....................
(10'uncu alana kadar bu işlem aynen böyle devam ediyor ve...)
Query1.Active := True;
end;
Kod: Tümünü seç
procedure TForm3.Edit1Change(Sender: TObject);
begin
SorguHazirla(Edit1.Text,Edit2.Text,Edit3.Text,Edit4.Text,Edit5.Text,Edit6.Text,Edit7.Text,Edit8.Text,Edit9.Text,Edit10.Text);
end;
Bir iki hatırlatma;
-Büyük Küçük harf duyarlı olsun istiyorsanız da LOWER kelimelerini kaldırın. Çünkü arama sırasında her karşılaştıralacak alanı küçük harfe dönüştürüp öyle sorguluyor.
- Bir de, Like yerine = işareti koyarsınız.
- Roner Kroner olayı; ALi yi araken SALİH' lerinde gelmesi...;
- % işaretlerini kaldırdığında, sadece yazdığın kelime mevcutsa cevap gelir.
- Kelimenin sadece başında % işarteti olur, sonda olmaz ise Roner Kroner ikisi de gelir ama Ronerli gibi bir kelime gelmez.
- Kelimenin sadece sonunda % işareti olursa, Roner istediğinde Kroner gelmez ama Ronerli gibi bir kelime gelir.
- Anlaşıldığı üzere % işareti öncesini ve sonrasını tamamlar şekilde benzer kelimeleri bulur.
hepsi bu...