Filitreleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Filitreleme

Mesaj gönderen Tahsinzencir »

Kod: Tümünü seç

type
  yenigrid=class(TDBGrid);
implementation
uses Unit1, USProj, UTedarikci, USec, UStok, UHLis, UHGTan, UIAktar, UIrsaliye;
{$R *.dfm}

procedure TFFatura.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Action := caFree;
   FFatura:= nil; //++
end;

procedure TFFatura.sBitBtn40Click(Sender: TObject);
begin
   Close;
end;

procedure TFFatura.KaydetClick(Sender: TObject);
begin
   DMSProj.TSHareket.Append;
   DMSProj.TSHareket.Edit;
   DMSProj.TSHareketEvrak.AsString:=E1.Text;
   DMSProj.TSHareketTarih.AsString:=E2.Text;
   DMSProj.TSHareketVTarih.AsString:=E3.Text;
   DMSProj.TSHareketHTip.AsString:=E7.Text;
   DMSProj.TSHareketHTanim.AsString:=E4.Text;
   DMSProj.TSHareketBaSan.AsString:=E5.Text;
   DMSProj.TSHareketHGurup.AsString:=E6.Text;
   DMSProj.TSHareketHKodu.AsString:=E8.Text;
   DMSProj.TSHareketHarTip.AsString:=E9.Text;
   DMSProj.TSHareketTutar.AsString:=Lab.Caption;
   DMSProj.TSHareket.Post;

   TFatura.Append;
   TFatura.Edit;
   TFaturaEvrak.AsString:=E1.Text;
   TFaturaTarih.AsString:=E2.Text;
   TFaturaVTarih.AsString:=E3.Text;
   TFaturaHTip.AsString:=E7.Text;
   TFaturaHTanim.AsString:=E4.Text;
   TFaturaBSantiye.AsString:=E5.Text;
   TFaturaHGrub.AsString:=E6.Text;
   TFaturaHarKod.AsString:=E8.Text;
   TFaturaHarTip.AsString:=E9.Text;
   TFaturaSToplam.AsString:=Lab.Caption;
   TFatura.Post;
   Kaydet.Enabled:=False;
   TFatSay.Post;

   DMSProj.TPersonel.Close;
   DMSProj.TPersonel.Open;//Tabloyu Aç
   if E5.Text=''
   then DMSProj.TPersonel.Filter:=''
   else
   DMSProj.QPerExtreToplam.Open;
   DMSProj.QPerExtreToplam.Close;
   DMSProj.QPerExtreToplam.Filter:='[HTanim]='+#39+E5.text+'*'+#39;
   DMSProj.QPerExtreToplam.Filtered:=True;
end;

procedure TFFatura.IKaydetClick(Sender: TObject);
var
   adet,i:Integer;
   toplam:Double;
begin
   if not assigned(FIrsaliye) then
begin
   FIrsaliye:=TFIrsaliye.Create(self);
   end
   else
   FIrsaliye.BringToFront;

   if  FIrsaliye.TIrsaliyeDurum.AsString=IRE.Text Then
   FIrsaliye.TIrsaliye.Filter:=''
   else
   FIrsaliye.TIrsaliye.Filter:='[IrNo]='+#39+IRE.text+'*'+#39;
   FIrsaliye.TIrsaliye.Filtered:=True;

   FIrsaliye.TIrsaliye.Edit;
   FIrsaliye.TIrsaliyeDurum.AsString:=E10.Text;
   FIrsaliye.TIrsaliye.Post;

begin
   TBagIrs.Refresh;
   TBagIrs.Append;

   if (TBagIrs.State <> dsEdit) and (TBagIrs.State <> dsInsert) then Exit;
   TBagIrsTarih.AsString:=E2.Text;
   TBagIrsVTarihi.AsString:=E3.Text;
   TBagIrsHTipi.AsString:=E7.Text;
   TBagIrsHTanim.AsString:=E4.Text;
   TBagIrsBSantiye.AsString:=E5.Text;
   TBagIrsHKod.AsString:=E8.Text;
   TBagIrsHarTip.AsString:=E9.Text;
   TBagIrsIrNo.AsString:=IRE.Text;
   TBagIrsMalNo.AsString:=E11.Text;
   TBagIrsMalzeme.AsString:=E12.Text;
   TBagIrsBirim.AsString:=E13.Text;
   TBagIrsMik.AsString:=E14.Text;
   TBagIrsBFiyat.AsString:=E15.Text;
   TBagIrsKDV.AsString:=E16.Text;
   TBagIrsKDVsizToplam.AsFloat:=strtofloat(E14.Text)*strtofloat(E15.Text);
   TBagIrsSToplam.AsFloat:=(strtofloat(E14.Text)*strtofloat(E15.Text)*strtofloat(E16.Text)/100)+(strtofloat(E14.Text)*strtofloat(E15.Text));
   TBagIrsKDVBFiyat.AsFloat:=(strtofloat(E14.Text)*strtofloat(E15.Text)*strtofloat(E16.Text)/100)/(strtofloat(E14.Text))+(strtofloat(E15.Text));
   TBagIrs.Post;
   TBagIrs.Refresh;
   QFatura.Refresh;

begin
   QFatura.Close;
   QFatura.Open;
   if E19.Text=''  then
   QFatura.Filter:=''
   else
   QFatura.Filter:='[HTanim]='+#39+E19.text+'*'+#39;
   QFatura.Filtered:=True;

begin
   QFatura.Open;
   toplam:=0;
   adet:=StrToInt(Format('%2d',[yenigrid(DBGrid1).RowCount-1]));//satır sayısı
   QFatura.First;//ilk kayıda git
   for i:=1 to adet do
begin
   toplam:=toplam+DBGrid1.Fields[7].AsFloat;
   QFatura.Next;
   end;
   Lab.Caption:=FloatToStrF(toplam,ffNumber,50,0);
   end;
    end;
     end;
end;

procedure TFFatura.sBitBtn2Click(Sender: TObject);
var
   aktar:AnsiString;
begin
   E1.Enabled:=True;
   E2.Enabled:=True;
   E3.Enabled:=True;
   E4.Enabled:=True;
   E5.Enabled:=True;
   E6.Enabled:=True;

   TFatSay.Refresh;
   if Har2.Text = '' then
   TFatSayNo.Text:= '';
   TFatSay.Edit;
   TFatSayNo.Text:=IntToStr(StrToInt(TFatSayNo.Text)+1);
   Har3.Text:= TFatSayNo.Text;
   aktar:=(Har1.Text)+' '+(Har3.Text);
   E1.Text:=aktar;
   Kaydet.BringToFront;
   Kaydet.Enabled:=True;

end;

procedure TFFatura.SecClick(Sender: TObject);
begin
   IKaydet.Enabled:=True;
   E1.Enabled:=True;
   E2.Enabled:=True;
   E3.Enabled:=True;
   E4.Enabled:=True;
   E5.Enabled:=True;
   E6.Enabled:=True;
   E11.Enabled:=True;
   E12.Enabled:=True;
   E13.Enabled:=True;
   E14.Enabled:=True;
   E15.Enabled:=True;
   E16.Enabled:=True;

   if not assigned(FIAktar) then
begin
   FIAktar:=TFIAktar.create(self);
   FIAktar.ShowModal;
   end
   else
begin
   FIAktar.TIAktar.Open;;
   FIAktar.TIAktar.Filtered := False;
   if E10.Text=EmptyStr then
   FIAktar.TIAktar.Filter:='';
   FIAktar.TIAktar.Filter := '[Durum]=' + AnsiQuotedStr(E10.Text + '*', ' ');
   FIAktar.TIAktar.Filtered := True;
   FIAktar.bringtofront;
   end;
end;

end.
//Dostlar en son begin blogu içindeki filitrelem işlemi programı çlaıştırdığımda hata vermiyor ancak filitrelem işlemini gerçekleştirmiyor bu sorunumu çözmeme yardımcı olurmusunuz.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Filitreleme

Mesaj gönderen ertank »

Merhaba,

AnsiQuotedStr yerine QuotedStr fonksiyonu kullanmayı deneyebilir misiniz?
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: Filitreleme

Mesaj gönderen Tahsinzencir »

AnsiQuotedStr yerine QuotedStr fonksiyonu kullandım anck "Çok fazla geçerli parametre" hatası verdi
FIAktar.TIAktar.Filter := '[Durum]=' + AnsiQuotedStr(E10.Text + '*', ' ');
FIAktar.TIAktar.Filter := '[Durum]=' + AnsiQuotedStr(E10.Text + ' '); kodu bu şekilde düzelttim çalıştı ancak yinede Filitreleme işlmini gerçekleştirmedi. sayın ertank bey ilginize tşk.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Filitreleme

Mesaj gönderen ertank »

Eğer yanlış bilmiyor isem Filter parametresi SQL standardında bir kullanıma sahiptir. Dolayısıyla string türünde bir bilgiyi boşluk değil tek tırnak ile vermeniz gerekir. Sorununuzun da bu olduğunu düşünüyorum. Siz AnsiQuotedString() fonksiyonunun son parametresi olarak boşluk karakteri gönderiyorsunuz. Dolayısıyla geri dönen bilgide tırnak ( ' ) veya çift tırnak ( " ) karakteri içinde olmamış oluyor.

Diğer taraftan gönderdiğiniz kodda üst kısımlarda birçok defa Filter parametresi kullanılmış. Siz en altta farklı şekilde kullanmaya çalışmışsınız. Buralardan kopya çekmeniz yeterli olabilirdi.

Hata aldığınız QuotedStr() kullanımınızda tahmin ediyorum sondaki boşluk bilgisini eklemeye çalıştınız ki hata açıklaması bana olası sebep olarak bunu söylüyor. QuotedStr() kullanımını aşağıdaki şekilde deneyebilir misiniz?

Kod: Tümünü seç

FIAktar.TIAktar.Filter := '[Durum]=' + QuotedStr(E10.Text + '*');
QuotedStr() fonksiyonu "quote" karakter olarak sadece tek tırnak kullandığı için sadece string bir parametre alır.
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: Filitreleme

Mesaj gönderen Tahsinzencir »

tavsiyelerinin hepsini denedim maalesef kod çalışıyor ancak filtreleme işlemini yapmıyor. filtre blokunu yanlış yere yazıyorum düşüncesi ile bütün bloklar arasında da denedim olmuyor.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Filitreleme

Mesaj gönderen ertank »

Eğer hassas bilgi içermiyor ise projeyi kullandığı database ile birlikte paylaşmanız mümkün mü?
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: Filitreleme

Mesaj gönderen Tahsinzencir »

Müsaade edersen özelinden göndermek isterim. Ne profesyonel nede amatörce çalışıyorum sadece piyasadaki programlardan esinlenerek Oğlumun iş yerine karınca kararınca bir şeyler yapmaya çalışıyorum. 62 yaşındayım böylece emekliliğimin zamanını böyle geçiriyorum. Delphi yi seviyorum Delphi 7 ve paradoks vt nı kullanıyorum. tekrar ilgine tşk.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Filitreleme

Mesaj gönderen ertank »

Kullandığınız sürüm ile ilgli; bende hiç kurulu Delphi 7 yok. Paradox veri tabanı yıllardır desteklenmiyor ve Windows 10 64Bit sistem üzerinde çalıştırabilir miyim emin değilim.

Eğer çok zaman ve uğraşı gerektirmeyecek ise sizin kullanımınıza uygun ücretsiz lisans alabileceğiniz Delphi Community Edition kullanmaya başlamanızı tavsiye edebilirim. Böylece SQL Server Express gibi çok daha modern ve desteklenen database sistemlerini kullanabilir hale gelebilirsiniz. Aşağıdaki bağlantıdan gerekli bilgileri doldurarak e-mail adresinize lisans bilgisi alabilir ve en son sürüm Delphi indirip sisteminize kurabilirsiniz.

https://www.embarcadero.com/products/de ... e-download
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: Filitreleme

Mesaj gönderen Tahsinzencir »

tşk. ilerde tavsiyenize uyucam.
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: Filitreleme

Mesaj gönderen Tahsinzencir »

ertank beye tekrar teşekkür ederim. Ancak problemimi çözebilecek dostlardan yardım bekliyorum.
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: Filitreleme

Mesaj gönderen Tahsinzencir »

sorunumu bu şekilde çözdüm herkese teşekkürler. İyi günler

SELECT IrNo, Tarih, VTarihi,HTipi,HTanim,BSantiye, HKodu, HarTip, MalNo, Malzeme, Evrak, Mik, Durum,Birim
FROM Irsaliye
WHERE Durum LIKE '%İşlenmedi%'
sahin4169
Üye
Mesajlar: 3
Kayıt: 06 Eki 2018 12:22

Re: Filitreleme

Mesaj gönderen sahin4169 »

Arkadaşlar Merhaba,
Benim bir tane SQL veri tabanım var tablomda da varistarihi isimli alanım var bu alana tarih olarak giriş yapıyorum benim amacım
bu alandaki tarihe 3 gün kala her form açılışında show message ile bana uyarı vermesi ne denediysem olmadı yardımlarınızı bekliyorum.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Filitreleme

Mesaj gönderen ertank »

sahin4169 yazdı: 06 Eki 2018 12:29 Arkadaşlar Merhaba,
Benim bir tane SQL veri tabanım var tablomda da varistarihi isimli alanım var bu alana tarih olarak giriş yapıyorum benim amacım
bu alandaki tarihe 3 gün kala her form açılışında show message ile bana uyarı vermesi ne denediysem olmadı yardımlarınızı bekliyorum.
Merhaba,

Kullandığınız Delphi sürümü nedir?
Databse erişimi için hangi bileşenleri kullanıyorsunuz?
Database içindeki ilgili tablo adı nedir?
Denediğiniz son kodu paylaşabilir misiniz?
sahin4169
Üye
Mesajlar: 3
Kayıt: 06 Eki 2018 12:22

Re: Filitreleme

Mesaj gönderen sahin4169 »

Merhaba,
1.delphi 10.2
2. Veri tabanı SQL - Bileşenler Adoconnection - DataSource - Adotable1
3. Tablo Adı proforma column adı : varistarihi
en son denediğim formuller olmayınca sildim :(
sahin4169
Üye
Mesajlar: 3
Kayıt: 06 Eki 2018 12:22

Re: Filitreleme

Mesaj gönderen sahin4169 »

Yardımcı olabilecek kimse yok mu ?
Cevapla