Kod: Tümünü seç
---------------------------
procedure TForm3.Edit1Change(Sender: TObject);
begin
SorguYap('Edit', 1, 4);
end;
------------------
Procedure TForm3.SorguYap(EditPrefix: String; EditBas, EditSon : Integer);
Var
Sayac : Integer;
Yazi : String;
WhereSatiri : Integer;
begin
// Dinamiktir Edit sayısı artsa da fonksiyon sabittir. Parametre girişi değişecektir.
Query1.Active := False;
Query1.SQL.Clear;
Query1.SQL.Add('Select * from giris');
For Sayac := EditBas to EditSon do
begin
Yazi := Trim( TEdit( FindComponent( Format('%s%d', [EditPrefix, Sayac]) ) ).Text );
If Yazi <> '' then
begin
If Pos('Where', Query1.SQL.Text) <= 0 then
begin // Sadece bir kere bu şarta düşecektir. Çünkü şimdi Where koyucaz.
Query1.SQL.Add('Where');
WhereSatiri := Query1.SQL.Count;
end;
If Query1.SQL.Count > WhereSatiri // OR Koyalım mı Koymayalım mı ?
then Query1.SQL.Add(' OR (LOWER(Oda) Like LOWER("%'+Yazi+'%" ))')
else Query1.SQL.Add(' (LOWER(Oda) Like LOWER("%'+Yazi+'%" ))');
If Query1.SQL.Count > WhereSatiri // OR Koyalım mı Koymayalım mı ?
then Query1.SQL.Add(' or (LOWER(AdiSoyadi) Like LOWER("%'+Yazi+'%" ))')
else Query1.SQL.Add(' (LOWER(AdiSoyadi) Like LOWER("%'+Yazi+'%" ))');
If Query1.SQL.Count > WhereSatiri // OR Koyalım mı Koymayalım mı ?
then Query1.SQL.Add(' or (LOWER(Bölüm) Like LOWER("%'+Yazi+'%" ))')
else Query1.SQL.Add(' (LOWER(Bölüm) Like LOWER("%'+Yazi+'%" ))');
If Query1.SQL.Count > WhereSatiri // OR Koyalım mı Koymayalım mı ?
then Query1.SQL.Add(' or (LOWER(AmeliyatAdi) Like LOWER("%'+Yazi+'%" ))')
else Query1.SQL.Add(' (LOWER(AmeliyatAdi) Like LOWER("%'+Yazi+'%" ))');
end;
end;
Query1.Active := True;
end;
Ben azalan ve birbirini eleyen bir arama tekniği düşünüyordum. Yani Oda no 3 olan Altı kişi arasından Bölümü ortopedi olan (kalan 3 kayıt) ve AdiSoyadı Mehmet ... olan (kalan 2 kayıt) ve AmeliyatAdi Skolyoz olanları bulsun (kalan1 kayıt). Yani azalan bir arama,
Bu döngüde ise hangi edite farklı bir alan yazsasında buluyor. Benim isteğim adı soyadı editinde (EDit2) arama yapılsın . oraya odaYı da yazınca getiriyor haliyle Sürekli artan bir arama geliyor karşımıza...
Yardımınızı bekliyorum. Teşekkürler