https://hizliresim.com/dl8VTp
Arkadaşlar merhaba yukarda linkini paylaşmış olduğum fotoğraftaki gibi filtreleme işlemini nasıl yapabilirim.
aynı tabloda farklı sütunlarda filtreleme yapılıyor filtreleme işleminde comboboxlar kullanılıyor.Checkboxlar işaretlendiğinde ise filtreye tarihlerde
dahil oluyor. ve burdaki her filtrede sütunlarla bağlantılı filtreleme yapılıyor comboboxlarda --TÜMÜ-- yazdığında ve checkboxlar işaretli olmadığında ise tüm kayıtlar gösteriliyor. Yardımlarınız için şimdiden teşekkür ediyorum.
Aynı Tabloda Farklı Sütunlarda Çoklu Filtreleme [Çözüldü]
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Aynı Tabloda Farklı Sütunlarda Çoklu Filtreleme [Çözüldü]
En son bnyamin tarafından 02 Oca 2021 08:00 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: Aynı Tabloda Farklı Sütunlarda Çoklu Filtreleme
Çoklu filtre için benim kullandığım bir Kod , kendine göre düzenleyebilirsin.
Kod: Tümünü seç
with Modul.R_Adisyon do
begin
Close;
SQL.Clear;
SQL.Add('SELECT MASA_ID,MASA_ADI,');
SQL.Add('SUM(K_TUTAR) AS T_KASA, SUM(B_TUTAR) AS T_BANKA, SUM(TUTAR) AS T_TUTAR');
SQL.Add('FROM T_ADISYON') ;
SQL.Add('WHERE STATU <> 4 AND TARIH >= :TARIH1 AND TARIH <= :TARIH2 ');
if cxTextEdit1.Text <> '' then
begin
case RadioGroup1.ItemIndex of
0 :SQL.Add('AND MASA_ADI LIKE '+QuotedStr(cxTextEdit1.Text+'%')+' ');
1 :SQL.Add('AND MASA_ADI LIKE '+QuotedStr('%'+cxTextEdit1.Text+'%')+' ');
2 :SQL.Add('AND MASA_ADI = '+QuotedStr(cxTextEdit1.Text)+' ');
3 :SQL.Add('AND MASA_ADI <> '+QuotedStr(cxTextEdit1.Text)+' ');
end;
end;
if cxTextEdit2.Text <> '' then
begin
case RadioGroup1.ItemIndex of
0 :SQL.Add('AND GARSON LIKE '+QuotedStr(cxTextEdit2.Text+'%')+' ');
1 :SQL.Add('AND GARSON LIKE '+QuotedStr('%'+cxTextEdit2.Text+'%')+' ');
2 :SQL.Add('AND GARSON = '+QuotedStr(cxTextEdit2.Text)+' ');
3 :SQL.Add('AND GARSON <> '+QuotedStr(cxTextEdit2.Text)+' ');
end;
end;
SQL.Add('GROUP BY MASA_ID,MASA_ADI ') ;
ParamByName('TARIH1').AsDateTime := cxDateEdit1.Date;
ParamByName('TARIH2').AsDateTime := cxDateEdit2.Date;
Open;
end;
Re: Aynı Tabloda Farklı Sütunlarda Çoklu Filtreleme
Arkadaşlar filtreleme sorununu hallettim şükür. Belki işine yarayan olur diye kodu paylaşıyorum konu ile ilgilenip cevap yazan arkadaşlara da çok teşekkür ediyorum.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
VAR
SQL : string;
toplam:currency;
begin
FORM2.SHOW;
SQL := '';
if trim(combobox1.Text) <> '' then SQL := '[PLAKA_NO]=' + QuotedStr(combobox1.Text) ;
if trim(combobox2.Text) <> '' then if SQL = '' then SQL := '[ALICI_FIRMA]=' + QuotedStr(combobox2.Text) else SQL := SQL + ' AND '+ '[ALICI_FIRMA]=' + QuotedStr(combobox2.Text) ;
if trim(combobox3.Text) <> '' then if SQL = '' then SQL := '[MALIN_CINSI]=' + QuotedStr(combobox3.Text) else SQL := SQL + ' AND '+ '[MALIN_CINSI]=' + QuotedStr(combobox3.Text) ;
if trim(combobox4.Text) <> '' then if SQL = '' then SQL := '[SATICI_FIRMA]=' + QuotedStr(combobox4.Text) else SQL := SQL + ' AND '+ '[SATICI_FIRMA]=' + QuotedStr(combobox4.Text) ;
if trim(combobox5.Text) <> '' then if SQL = '' then SQL := '[ACIKLAMA]=' + QuotedStr(combobox5.Text) else SQL := SQL + ' AND '+ '[ACIKLAMA]=' + QuotedStr(combobox5.Text) ;
if checkbox1.checked=true then if SQL = '' then SQL := '[CIKIS_TARIHI]>=' + SQLDateFmt(datetimepicker1.Date) else SQL := SQL + ' AND '+ '[GIRIS_TARIHI]>=' + SQLDateFmt(datetimepicker1.Date) ;
if checkbox2.checked=true then if SQL = '' then SQL := '[CIKIS_TARIHI]<=' + SQLDateFmt(datetimepicker2.Date) else SQL := SQL + ' AND '+ '[CIKIS_TARIHI]<=' + SQLDateFmt(datetimepicker2.Date) ;
adoquery2.Filtered :=False;
adoquery2.Filter := SQL;
adoquery2.Filtered :=True;
adoquery2.DisableControls;
ADOQuery2.First;
while not ADOQuery2.Eof do
Begin
Toplam := Toplam + ADOQuery2.FieldByName('NET').Value;
ADOQuery2.Next;
End;
form2.cxCurrencyEdit1.Text := CurrToStrf(Toplam,ffnumber,0)+ ' KG';
form2.Label1.Caption := CurrToStrF(Toplam,ffnumber,0)+ ' KG';
adoquery2.EnableControls;
end;