Sa. Arkadaşlar. Formumuzda diyelimki 3 tane editbox var. Databasemizde de aynı tabloda 3 ayrı sütun var. A,B,C
Editbox1 A
Editbox2 B
Editbox3 C
Bu sorgulamanın sql kodunu nasıl yazarım. Teşk.
Birden fazla editbox ile sorgulama
Re: Birden fazla editbox ile sorgulama
Merhaba.
- Bu soru genel ve sık gelen bir sorudur, ortak bir cevap vereceğim. Daha sonra bu cevabı göremeyenler için benzeri sorular gelirse burayı referans göstereceğim.
- Şimdi sana iki seçenek sunacağım.
(1) Edit'lerin boş iken tüm kayıtları gösteren, Edit'lere giriş yaptıkça filtrelenen hali.
(2) Edit'lerin boş iken sadece tablo başlıkları görünen ama hiçbir kayıt göstermeyen, herhangi bir Edit'e giriş yapmanı bekleyen hali.
- Başlığı okuyanlar için (=) eşittir işareti yerine LIKE kullanımına ilişkin bilgi tazelemesi yapayım, % işareti arayacağın terimin sonunda ise başlangıcı Edit'lere girdiğin ve sonunda ne olursa yani joker anlamındadır.
(1)
Böylece her üçü de boş ise tüm kayıtları, herhangi bir dolu ise dolu olanlar kadar filtrelenmiş kayıtları görürsün.
(2)
- Eğer dersen ki hepsi boşsa hiç kayıt gelmesin, doldurdukça ilgili kayıt varsa gelsin o zaman 1=1 yerine 1=0 yapıp AND olanları OR parantezine almak yeterli.
- Bu soru genel ve sık gelen bir sorudur, ortak bir cevap vereceğim. Daha sonra bu cevabı göremeyenler için benzeri sorular gelirse burayı referans göstereceğim.
- Şimdi sana iki seçenek sunacağım.
(1) Edit'lerin boş iken tüm kayıtları gösteren, Edit'lere giriş yaptıkça filtrelenen hali.
(2) Edit'lerin boş iken sadece tablo başlıkları görünen ama hiçbir kayıt göstermeyen, herhangi bir Edit'e giriş yapmanı bekleyen hali.
- Başlığı okuyanlar için (=) eşittir işareti yerine LIKE kullanımına ilişkin bilgi tazelemesi yapayım, % işareti arayacağın terimin sonunda ise başlangıcı Edit'lere girdiğin ve sonunda ne olursa yani joker anlamındadır.
Kod: Tümünü seç
'ar%' dersen 'ar' ile başlayanlar
'%ar' dersen sonu 'ar' ile bitenler
'%ar%' dersen içinde herhangi bir yerinde 'ar' geçenler anlamındadır.
Kod: Tümünü seç
SQL.Clear;
SQL.Add('SELECT A,B,C FROM Tablo ');
SQL.Add('WHERE 1=1');
if Trim(EditBox1.Text) <> '' then SQL.Add('AND PL_Donem like ' + QuotedStr(EditBox1.Text + '%') );
if Trim(EditBox2.Text) <> '' then SQL.Add('AND PL_Adi like ' + QuotedStr(EditBox2.Text + '%') );
if Trim(EditBox3.Text) <> '' then SQL.Add('AND PL_Soyadi like ' + QuotedStr(EditBox3.Text + '%') );
SQL.Add('ORDER BY T1.O_KayNo');
Active := True;
(2)
- Eğer dersen ki hepsi boşsa hiç kayıt gelmesin, doldurdukça ilgili kayıt varsa gelsin o zaman 1=1 yerine 1=0 yapıp AND olanları OR parantezine almak yeterli.
Kod: Tümünü seç
SQL.Clear;
SQL.Add('SELECT A,B,C FROM Tablo ');
SQL.Add('WHERE 1=0');
if ( Trim(EditBox1.Text) <> '' ) OR ( Trim(EditBox2.Text) <> '' ) OR (Trim(EditBox3.Text) <> '') then
begin
SQL.Add('OR ( 1=1');
if Trim(EditBox1.Text) <> '' then SQL.Add('AND PL_Donem like ' + QuotedStr(EditBox1.Text + '%') );
if Trim(EditBox2.Text) <> '' then SQL.Add('AND PL_Adi like ' + QuotedStr(EditBox2.Text + '%') );
if Trim(EditBox3.Text) <> '' then SQL.Add('AND PL_Soyadi like ' + QuotedStr(EditBox3.Text + '%') );
SQL.Add(')');
end;
SQL.Add('ORDER BY T1.O_KayNo');
Active := True;
-
- Üye
- Mesajlar: 6
- Kayıt: 06 Kas 2015 07:49
Re: Birden fazla editbox ile sorgulama
Çok teşekkürler mrmarman, verdiğin kodlar işimi gördü.