Yaz  Font K   lt Yaz  Font B y lt

Sql Parametreleri Ile Arama 

 

Merhaba arkadaşlar bu makalemizde dbGrid de girilen parametrelere göre verilerin gösterimini sağlayacağız.

Formumuza Palette kısmından DBGrid nesnesi ve FDConnection, FDQuery, DataSource ekleyelim. ObjectInspector penceresinden DataSource nesnemizin DataSet özelliğini FDQuery1 yapalım.  Yine . ObjectInspector penceresinden FDQuery1 nesnesinin Connection özelliğini FDConnection1 seçelim. Ayrıca SQL özelliğine tıklayalım. Açılan String List Editor penceresine Sql ifademizi yazalım. Ben bu örnekte “Select * from dbo.worldclassics “ sql ifadesini kullandım. FDQuery1 nesnemizin Active özelliğini “True” yapalım. Son olarak FDConnection1 nesnemizi seçip sağ tıklayalım. Daha sonra Connection Editor e tıklayalım. Ben bu örnekte MS SQL e bağlantı sağlayacağım. Bundan dolayı aşağıdaki şekildeki gibi bağlantı ayarı yaptım.

FDQuery ParamByName parametresini kullanarak Edit lere girdiğimiz koşullara göre arama yaparak dbGrid nesnesinde filtrelenmiş verilerin gösterimini sağlayacağız.

 

Resim1

Şekil 1

 

Şimdi de DBGrid1 nesnemizin DataSource özelliğini DataSource1 yapalım ve Projemizi çalıştıralım. Aşağıdaki şekildeki gibi sonuç elde etmiş olacağız.

 

Resim1

Şekil 2

 

unit Unit1;

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Gr

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.StdCtrls, Vcl.Grids,

Vcl.DBGrids, 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.Phys.MSSQL, FireDAC.Phys.MSSQLDef,

FireDAC.VCLUI.Wait, FireDAC.Comp.Client, FireDAC.Comp.DataSet;

type

TForm1 = class(TForm)

DBGrid1: TDBGrid;

GroupBox1: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

Edit2: TEdit;

btnSearch: TButton;

FDQuery1: TFDQuery;

FDConnection1: TFDConnection;

DataSource1: TDataSource;

procedure btnSearchClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

FDQuery1.Close;

FDQuery1.SQL.Add('Select * from dbo.worldclassics');

FDQuery1.Open;

end;

procedure TForm1.btnSearchClick(Sender: TObject);

begin

//opsiyonel sorgulama

begin

if (Edit1.Text=''and (Edit2.Text=''Then

ShowMessage('Lütfen En Az Bir Parametre Giriniz')

else if Edit1.Text='' Then

begin

FDQuery1.SQL.Clear;

FDQuery1.SQL.Add('Select * from dbo.worldclassics Where Price<=:price');

FDQuery1.ParamByName('price').AsCurrency:=StrToCurr(Edit2.Text);

FDQuery1.Open;

end

else if Edit2.Text='' Then

begin

FDQuery1.SQL.Clear;

FDQuery1.SQL.Add('Select * from dbo.worldclassics Where Price>=:price');

FDQuery1.ParamByName('price').AsCurrency:=StrToCurr(Edit1.Text);

FDQuery1.Open;

end

else

begin

FDQuery1.SQL.Clear;

FDQuery1.SQL.Add('Select * from dbo.worldclassics Where Price>=:price and Price<=:price2');

FDQuery1.ParamByName('price').AsCurrency:=StrToCurr(Edit1.Text);

FDQuery1.ParamByName('price2').AsCurrency:=StrToCurr(Edit2.Text);

FDQuery1.Open;

end;

end;

end;

end.  

 

Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek üzere. Bahadır ŞAHİN