formda tek dbgrid den 5-6 ayrı dbedit ile elemeli filtre

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hakan2002
Üye
Mesajlar: 18
Kayıt: 01 Nis 2007 09:08

formda tek dbgrid den 5-6 ayrı dbedit ile elemeli filtre

Mesaj gönderen hakan2002 »

dostlar ben bir form üzerinde 5-6 adet dbedit ten alttaki dbgrid den filtreleme yapacağım

ilk dbeditte dilediğim gibi filtre yapabiliyorum
benim istediğim ilk db de yaptığım filtreden sonra dbgrid içerisinde kalan örneğin 500 sonucun(adı soyadı) içinde ikinci dbedit ile baba adına göre filtreleme yapmak istiyorum
ama bu tablodaki tümn kaytıtlardan değil
ilk filtreden sonraki kalan misal 500 kayıtın içinden olsun ve bundan sonrada diyelimki 200 kayıta indi bu seferde doğum tarihi ile filtrelemek istoyorum... bir nevi elem usulü gibi..şimdiden yardım eden arkadaşlara teşekkür ederim

anlatımım kötü olabir ama malesef acemilik bağışlayın
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

filtreleme diye arama yaptım ve bir çok sonuca ulaştım. bunlardan biri cxgrid için;

viewtopic.php?t=18274&highlight=filtreleme

aklıma birde şu çözüm geliyor. ben genelde genel alan sorgulamalarında kullanırım. 5-6 veya ihtiyaca göre 10 editim olur ve kullanıcı dilediği edite girerek sorgu çeker. böyle bir uygulama olabilir. birinci edite girer sorguyu çeker ad ile sonra ikinci edite girer soyadı ile sorgu çeker sonra üçüncü edit diyerek eleye eleye sorgu çeker. fakat burada her sorgu çalışmasında tablonun tümünü tarar tabiki.

siz öncelikle aramayı kullanarak forumu bir gezinin derim.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
hakan2002
Üye
Mesajlar: 18
Kayıt: 01 Nis 2007 09:08

teşekkürler

Mesaj gönderen hakan2002 »

ilgine teşekkür ederim kardeş..
acemiliğin gözü kör olsun.. bilmemek çok kötü...
umarım tavsiyelerinle bir yerlere varabilirim ama tabi benim asıl aradığım olay 150 tane hakan isimli kullanıcı bulmuş isek bunların içinde soy adı bayrak olanı bulmak...burda ana fikir bayrak diye sorgullattığımda mehmet yada kemal bayrakları bulmamak....
belki bu konuda çözümü olan başka arkadaşlarda çıkar...
tekrar teşekkür ederim
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Mesaj gönderen mudipasa »

S.A.
hakan2002 kardeş SQL sorugusu kullanıyormusun bilmiyorum ama ben sana Paradox için yaptğım bir taktik vereyim.
Öncelikle DBEdit değil normal editlerle yapıyorum. DBTable filtresine filtre diyelim SQL inkine Queryfiltre diyelim.

filtre := filtre + 'AND (ADISOYADI=' + QuotedStr(Edit1.Text+'*') + ')'

Queryfiltre := Queryfiltre + 'AND ADISOYADI Like "'+Edit1.Text+ '%" ';

eğer başka editlerin varsa onları tek tek yazıp AND leyebilirsin. En sonunda
TTABLE için ;
Table1.Filter := filtre;

SQL Query için
Query1.SQL.Add('Selecet .................. from ..... Where '+Queryfiltre);

ile işlemini yaparsın. Kafan karışırsa yaz birazdaha geniş bir örnek vereyim. Şuan zamanım yok kusura bakma.
hakan2002
Üye
Mesajlar: 18
Kayıt: 01 Nis 2007 09:08

teşekkür

Mesaj gönderen hakan2002 »

dostum yardımın için çok teşekkür ederim ama sql i malesef hiç bilmiyorum..
hadi yardımcı ol anlat desem sana yazık :)
ama ilgine teşekkür ederim
bu sql ve query işini öğrenmem lazım ama evdende 36 yaşında bu işler zor oluyor...sizlerin sayesinde bişeyler kapıyoruz işte...
tekrar teşekkürler
birden fazla form oluşturarak bu sorunu aşmaya karar verdim... takılmaktansa sanırım üretmek adına kulağı tersten tutarakta olsa şu kulağı tutayım dedim ...tekrar tekrar teşekkür ederim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

çok uzun yol olabilir ustalarım kısa ve öz olanı biliyordur ama fikir açısından şu kodları vermek istedim.

Kod: Tümünü seç

var
  s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,
  s18,s19,s:String;
    begin
      s1:=dblookupcombobox4.Text;
      s2:=Edit1.text;
      s3:=edit2.Text;
      s4:=edit3.Text;
      s5:=Edit4.text;
      s6:=edit12.Text;
      s7:=dblookupcombobox5.Text;
      s8:=dblookupcombobox6.text;
      s9:=edit13.Text;
      s10:=edit14.Text;
      s11:=edit15.text;
      s12:=dblookupcombobox7.Text;
      s13:=edit16.Text;
      s14:=edit17.text;
      s15:=edit18.Text;
      s16:=edit19.Text;
      s17:=edit20.text;
      s18:=edit21.Text;
      s19:=edit22.Text;

      sorgudm.raporsorguibqry.close;

  with sorgudm.raporsorguibqry.sql do
    begin
      Clear;
      Add('Select * From OLAYRAPOR');
  if s1<>'' then s:='(TERMINALKODU = '''+s1+''')';
  if s2<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(OLAYYILI = '''+s2+''')'
    end;
  if s3<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(RAPORNO = '''+s3+''')'
    end;
  if s4<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(EKRAPORNO = '''+s4+''')'
    end;
  if s5<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(OLAYTARIHI1 = '''+s5+''')'
    end;
  if s6<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(INCTARIHI = '''+s6+''')'
    end;
  if s7<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(SUCTURU CONTAINING ''%'+s7+'%'')'
    end;
  if s8<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(ISTOLYADI CONTAINING '''+s8+''')'
    end;
  if s9<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(RAPOROLYADI CONTAINING ''%'+s9+'%'')'
    end;
  if s10<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(OLYGIRIS CONTAINING ''%'+s10+'%'')'
    end;
  if s11<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(OLYCIKIS CONTAINING ''%'+s11+'%'')'
    end;
  if s12<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(ILI CONTAINING ''%'+s12+'%'')'
    end;
  if s13<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(ILCESI CONTAINING ''%'+s13+'%'')'
    end;
  if s14<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(MAHALLE CONTAINING ''%'+s14+'%'')'
    end;
  if s15<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(CADDESOKAK CONTAINING ''%'+s15+'%'')'
    end;
  if s16<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(BILINENADI CONTAINING ''%'+s16+'%'')'
    end;
    if s17<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(PLAKA LIKE ''%'+s17+'%'')'
    end;
  if s18<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(MARKA CONTAINING ''%'+s18+'%'')'
    end;
  if s19<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(MODEL CONTAINING ''%'+s19+'%'')'
    end;

  if s<>'' then add ('WHERE '+s);
    add('ORDER BY OLAYYILI, RAPORNO, EKRAPORNO');
    end;

      sorgudm.raporsorguibqry.Open;
      sorgudm.raporsorguibqry.Last;
      jvgroupbox6.Caption:='SORGULAMA SONUCU : [ '+inttostr(sorgudm.RaporSorguIBQry.RecordCount)+
        ' ] KAYIT BULUNDU';

   if sorgudm.raporsorguibqry.IsEmpty then
     ShowMessage('Aranılan Kriterde Kayıt Bulunamamıştır.');
şimdi 19 tane falan edit vb. bileşenler var. kullanıcı dilediği alana göre sorgu çekiyor. kişiyi bağlama yok ister bir edite girilen kriter ile ister 5 ister 10 isterse hepsi ile.

birinci edite hakan yazdın ve sorguladın. hakanlar geldi soyadları farklı bir sürü hakan, sonra ikinci edite soyadını girdin birinci editteki hakan duruyor ama silmek yok. yine butona bastın ve hakan bayrak lar geldi, yine elemek istedin bu sefer üçüncü edite doğum yerini girdin ama birinci ve ikinci editleri silmek yok onlarda dahil olacak olaya ve sorguladın ve istediğin elemeyi elde ettin diye düşünüyorum. inşeallah fikir verir sana

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Cevapla