Merhaba,
Ben yaptığım projelerde genelde kullanıcıya filtre ekranı sunarım ve yapmak istediğini her ekranımda yaparım,
Kodunu istediğini verecek şekilde düzenledim ufak değişiklikleri sen yaparsın artık.
Kısaca mantık şu kullanmak istediğin bütün filtreler sorgunda varmış gibi olmalı ancak çalışmasını istediğin şartın filtresi
SQL dilinin anlayacağı şekilde "--" ile kapalı olmalı ve o şarta vereceğin unique bir isim olmalı, sonrasında sorgulama yaptırırken
ekranda verdiğin filtrelerin kodda kontrolünü yapmalı uygulanacak filtre varsa bu filtrenin satırını string replace ile açmalı ve eğer
parametresi varsa da belirtmelisin. Bu kadar.
Kolay gelsin.
Kod: Tümünü seç
UniQuIZIN.Close ;
UniQuIZIN.SQL.TEXT :='SELECT * FROM KALANIZIN WHERE IZIN_BASLA BETWEEN :B_TARIH AND :S_TARIH AND ADSOYAD LIKE'+ '''%'+COMBOBOX13.Text +'%'''+
' --FLT_ADSOYAD AND ADSOYAD = :ADSOYAD'+
' --FLT_ISBASI AND ISBASI_TAR = :ISBASI_TAR'+
' ORDER BY ISBASI_TAR ,ADSOYAD,BIRIMI COLLATE PXW_TURK ASC' ;
if Adsoyad_Filtresi.TExt <> '' then //ister ifadenin dolu olup oladığına istersen uzunluğuna bak
begin
UniQuIZIN.SQL.TEXT := StringReplace(UniQuIZIN.SQL.TEXT,'--FLT_ADSOYAD','',[rfReplaceAll]);
UniQuIZIN.ParamByName('ADSOYAD').AsString := Adsoyad_Filtresi.TExt;
end;
if BaslamaTarihi.TExt <> '' then //ister ifadenin dolu olup oladığına istersen uzunluğuna bak
begin
UniQuIZIN.SQL.TEXT := StringReplace(UniQuIZIN.SQL.TEXT,'--FLT_ISBASI','',[rfReplaceAll]);
UniQuIZIN.ParamByName('ISBASI_TAR').AsString := BaslamaTarihi.TExt;
end;
UniQuIZIN.Open;