Table filter

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 02:52

Table filter

Mesaj gönderen brs » 06 Kas 2012 10:13

Merhaba; DBGrid, Table, DB olarakta paradox kullanıyorum.

DB'de iki adet filter yaptırmak istiyorum 1. tarihe göre 2. isim'e göre tarihe göre filterde sorun yok.
Fakat tarih filter'İ sürekli olarak aktif isim'e göre filter yaptığımda tarihe göre yapılan filteri bozuluyor DB'deki tüm kayıtlar ortaya çıkıyor

Örnek: 06.11.2012 filter aktif iken ikinci olarak isim'e göre ama yapıldığında 06.11.2012 tarihinde kayıtlardaki filter DBGrid ekrana gelsin DBGgid'deki tüm kayıtlar ekranına gelmesin...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...

arkantos_55
Üye
Mesajlar: 25
Kayıt: 26 Nis 2011 02:18

Re: Table filter

Mesaj gönderen arkantos_55 » 06 Kas 2012 10:26

Filtre için kullandığın kodu verirsen yardımcı olmaya çalışalım

kodu görmeden bir tavsiye filtreyi değişkende tut

değişkenleri peşpeşe ekle ama filtreleme olaylarını querynin ki gibi hazır filtreleme alanı yerine sorguyla yaparsan hata payı daha aşşağı iner ve çok daha hızlı işlem yapar az kayıtta sıkıntı çıkarmaz ama kayıt sayısı 20.000 gibi bir değere yaklaşırsa filtreleme yavaşlar sorgu en iyisi.

Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 02:52

Re: Table filter

Mesaj gönderen brs » 07 Kas 2012 11:55

İlginizden dolayı teşekkürler.

Özel bir kod yazmadım form sayfası açılınca MaskEdit1 o günün tarihine göre DBGridi otomatik olarak filter yapıyor
İkinci olarak ise Edit1 var buda isme göre arama yapıyor ama bu seferde MaskEdit ile yapmış olduğum filter bozuluyor tüm kayıtlar ortaya çıkıyor.

benim yapmaya çalıştığım şey tarih filteri bozulmadan isme göre filter yaptığımda o tarihteki liste ortaya çıksın diğer kayıtlar ortaya çıkmasın sorunum bu...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...

arkantos_55
Üye
Mesajlar: 25
Kayıt: 26 Nis 2011 02:18

Re: Table filter

Mesaj gönderen arkantos_55 » 07 Kas 2012 02:39

ozaman filtrenin ardından maskedit.refresh gibi editi tetikliyecek bir şey denesen belki şini görür ama benim tavsiyem her türlü filtrelemeyi yinede slq sorgusu şeklinde kullanmam hata alma riskin azalır.

Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 02:52

Re: Table filter

Mesaj gönderen brs » 13 Kas 2012 09:48

Merhaba, form sayfası açılınca MaskEdit1 o günün tarihine göre DBGridi otomatik olarak filter yapıyor
İkinci olarak ise Edit1 var buda isme göre arama yapıyor ama bu seferde MaskEdit ile yapmış olduğum filter bozuluyor tüm kayıtlar ortaya çıkıyor.

procedure TForm9.Edit1Change(Sender: TObject);
begin
if Trim(Edit1.Text) <> '' Then
begin
Table1.Filtered := False;
Table1.FilterOptions := [foCaseInsensitive]; // Büyük Küçük Harf Duyarlılığını İptal
Table1.Filter := 'PROGRAMADI=' + QuotedStr(Edit1.Text + '*') + MaskEdit6.Text; Burayı çözemedim
Table1.Filtered := True; // Tablo Filitreleme Aktif Hale Geleliyor
end
else
begin
Table1.Filtered := False;
Table1.Next;
Table1.Edit;
end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...

arkantos_55
Üye
Mesajlar: 25
Kayıt: 26 Nis 2011 02:18

Re: Table filter

Mesaj gönderen arkantos_55 » 15 Kas 2012 03:06

Kod: Tümünü seç

procedure TForm9.Edit1Change(Sender: TObject);
begin
  if Trim(Edit1.Text) <> '' Then
  begin 
    Table1.Filtered := False;
    Table1.FilterOptions := [foCaseInsensitive]; // Büyük Küçük Harf Duyarlılığını İptal
    Table1.Filter := 'PROGRAMADI like ' + #39+Edit1.Text + '*' +#39 +' and tarihsutunuadi = '+#39+ MaskEdit6.Text+#39; Buşekilde Dünzenlerseniz işinizi görecektir diye düşünyorum.
    Table1.Filtered := True; // Tablo Filitreleme Aktif Hale Geleliyor
  end
  else 
  begin
    Table1.Filtered := False;
    Table1.Next; 
    Table1.Edit;
  end;
end;
Bu şekilde işiniz hallolur ama tek filtreliktir uyarırım bununda üstüne yine bir filtre uygularsanız öncekini silecek ve yine tarih ve program adına yeni bir filtre oluşturacak.

Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3044
Kayıt: 17 Nis 2006 07:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Table filter

Mesaj gönderen sabanakman » 15 Kas 2012 03:53

DataSet'lerin Filter özelliğine string değer verilebildiği gibi bir de onFilterRecord olayına kod yazarak da filtreleme işlemi yapabilirsiniz.

Kod: Tümünü seç

procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
  Accept:=False;//veya true değerini sağlayacak şartın delphi tarafında kodlanması
end;
Örnek kodlamaya göre hiç kayıt gelmeyecektir, tabi Filtered özelliği True ise.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

Cevapla