DBGrid Nesnesinde Filtreleme
Merhaba arkadaşlar bu makalemizde FDQuery in Filter özelliğini kullanarak DBGrid nesnesindeki verileri filtreleyeceğiz.
Formumuza 1 adet GroupBox, Lael, Edit ve DBGrid nesnesi ekleyelim.
Ayrıca Palette kısmından FDQuery, FDConnection ve DataSource ekleyelim.
FDConnection a sağ tıklayalım. Açılan pencerede Connection Editor e tıklayalım. MSSQL e bağlanacağımız için Driver Id kısmında MSSQL i seçelim. Tablomuz master database de olduğu için, Database i master seçiyoruz. Sizlerbu alanda tablonuzun bulunduğu database i yazmalısınız. User_Name ve Password kısmına MSSQL e bağlantı yaparken kullandığımız kullanıcı bilgilerini girmeliyiz.

Şekil 1
Test kısmına tıkladığımızda FireDAC Login kısmına ulaşırız. Bu pencerede Profile seçimini yaparak OK butonuna tıklayınız.

Şekil 2
Eğer database e bağlantı için bilgiler doğru girilmişse, aşağıdaki mesajı göreceğiz.

Şekil 3
Object Inspector kısmından FDConnection ın connected özelliğini true yapalım.
FDQuery i seçelim. Object Inspector penceresinde SQL kısmına tıklayalım. Açılan String List Editor penceresine Sql ifademizi yazalım. Bu örnekte sql ifademiz,
Select * from dbo.worldclassics
FDQuery in Active kısmını true yapalım.
Son olarak DataSource nesnesini seçelim. DataSet özelliğini FDQuery olarak ayarlayalım. DBGrid nesnesini seçiliyken, DataSource özelliğini DataSource1 olarak ayarlayalım.
Bu işlemleri yaptıktan sonra formumuzu çalıştıralım. Aşağıdaki gibi MSSQL deki tablomuza bağlandığımızı ve dataları DBGrid nesnesinde aşağıdaki gibi göreceğiz.

Şekil 4
Edit nesnesine yazar ismini girip Enter tuşuna basarak, DBGrid nesnesinde yazar adına göre filtreleme yapmış olacağız.

Şekil 5
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, FireDAC.Stan.Intf,
FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS,
FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt,
FireDAC.UI.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Phys,
FireDAC.VCLUI.Wait, Vcl.StdCtrls, FireDAC.Comp.Client, FireDAC.Comp.DataSet,
Vcl.Grids, Vcl.DBGrids, FireDAC.Phys.MSSQL, FireDAC.Phys.MSSQLDef;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
FDQuery1: TFDQuery;
FDConnection1: TFDConnection;
GroupBox1: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
DataSource1: TDataSource;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
//If you click the enter key on the keyboard
//Enter tusuna tıklanirsa
if Key=#13 Then
begin
//There is no case sensitivity.
//Buyuk kucuk harf duyarliligi yok
FDQuery1.FilterOptions:=[foCaseInsensitive];
//Our filtering criteria.
//Filtre kriterimiz
FDQuery1.Filter:='Author='+QuotedStr(Edit1.Text);
FDQuery1.Filtered:=true;
end;
end;
end.
Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek üzere. Bahadır ŞAHİN