table da filtreleme yapmak (ÇÖZÜLDÜ)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
OZAY
Üye
Mesajlar: 23
Kayıt: 22 Eyl 2014 10:52

table da filtreleme yapmak (ÇÖZÜLDÜ)

Mesaj gönderen OZAY »

merhabalar ben table daki kayıtlarda tarih malzeme ve plakaya göre filtreleme yapmak istiyorum
ama yapamıyorum iki tarih arası filtreleme yapıyorum ama mesela iki tarih arasındaki malzemeyi
filrelemeye çalıştığım zaman olmuyor aşağıdaki kodlara göre yapınca
tek bir kayıt gösteriyor benim istediğim arama kriterlerini girince o kriterlere uyan tüm kayıtları görmek
ve quick raportta göstermek

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
ara:Boolean;
begin
ara:=Table1.Locate('PLAKA;mlzadi',varArrayOf([Edit1.Text,Edit2.Text]),[]);
if not ara Then
ShowMessage('Kayıt Bulunamadı');
end;
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
Table1.IndexName:='IdxTrh';
Table1.SetRange([datetimepicker1.date],[datetimepicker2.date]);//TARİH ARALIĞI
Table1.ApplyRange;//uygula


iki tarih arasını bu kodla filtreleye biliyorum ama aynı şekilde malzeme , plaka da filtrelemeke isityorum

procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
Table1.IndexName:='IdxTrh';
Table1.SetRange([datetimepicker1.date],[datetimepicker2.date]);//TARİH ARALIĞI
Table1.ApplyRange;//uygula
end;
yardımcı olursanız sevinirim şimdiden teşekkürler
En son OZAY tarafından 21 Ara 2014 10:58 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: table da filtreleme yapmak yardım

Mesaj gönderen tuna »

Hangi veritabanını kullanıyorsun bilmiyorum ama query kullanman gerekiyor. Table nesnesi böyle konularda yetersiz kalır.
Kullanıcı avatarı
cinarbil
Üye
Mesajlar: 109
Kayıt: 18 Mar 2014 09:26

Re: table da filtreleme yapmak yardım

Mesaj gönderen cinarbil »

data_form.siparisdbf.Filter :=''; // filitreleri temizle

Kod: Tümünü seç

// bayiler text alanında bilgi varsa ve siparis alanında bilgi varsa  filitreyi başlat  buradaki  büyük harfle yazılan tüm alanlar S_BAYI_ADI gibi  tabloyu oluştururken kullandığın field adı 
if (bayiler.Text <> '') and (kf_siparis_no.Text <>'')  then data_form.siparisdbf.Filter := 'S_BAYI_ADI=' + QuotedStr(bayiler.Text) +   ' AND ' + 'S_SIPARIS_NO = '+ QuotedStr(kf_siparis_no.Text);

 if (bayiler.Text <> '') and (kf_siparis_no.Text ='')   then  data_form.siparisdbf.Filter := 'S_BAYI_ADI=' + QuotedStr(bayiler.Text);

 if (bayiler.Text = '') and (kf_siparis_no.Text <>'')   then  data_form.siparisdbf.Filter := 'S_SIPARIS_NO = '+ QuotedStr(kf_siparis_no.Text);
  if (bayiler.Text = '') and (kf_siparis_no.Text = '')  and (strtoint(kf_imalat.text) > 0) then  data_form.siparisdbf.Filter :='S_IMALAT_NO='+ QuotedStr(kf_imalat.Text);
 data_form.siparisdbf.Filtered := true;
yukarıdaki gibi istediğin kadar filitre ekleye bilirsin.
dikkat etmeniz gereken filitre yaptıgınız alan ile filitrelenecek alan aynı özellikte olmalı
yani S_BAYI_ADI tablonda string alan olmalıki bayiler.text alanındaki bilgiye göre filitre yapabilsin
QuotedStr filitre edilecek alanı 'xxxxx' tırnak içine almak içindir.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
OZAY
Üye
Mesajlar: 23
Kayıt: 22 Eyl 2014 10:52

Re: table da filtreleme yapmak yardım

Mesaj gönderen OZAY »

verdiğiniz bilgiler için teşekkür ederim veri tabanı olarak database kullanıyorum query hiç kullanmadım delphide yeniyim query uygulamalarını öğrenip deniycem
OZAY
Üye
Mesajlar: 23
Kayıt: 22 Eyl 2014 10:52

Re: table da filtreleme yapmak yardım

Mesaj gönderen OZAY »

Database ile filtreleme birden fazla alanda yapmak için aşağıdaki kodu kullandım
şu anda SQL ve Access veri tabanlarıyla yapıyorum teşekkür ederim hepinize

Kod: Tümünü seç

if (dblookupcombobox1.Text<>'') and(dblookupcombobox2.Text<>'') and (dblookupcombobox3.Text<>'') then
      begin
      DM.Table1.Filter:='[malzeme]=' + QuotedStr(dblookupComboBox1.Text)+ ' and [plaka]=' + QuotedStr(dblookupComboBox2.Text)+ ' and [firmaadi]=' + QuotedStr     (dblookupComboBox3.Text) ;
      DM.Table1.Filtered:=true;
end;
Cevapla