Pemrograman Visual Borland Delphi 5.0 TQuery

48
1 Pemrograman Visual Borland Delphi 5.0 TQuery

description

Pemrograman Visual Borland Delphi 5.0 TQuery. Dalam banyak kasus, komponen Ttable sudah mencukupi untuk membangun aplikasi basis data. Namun ada beberapa kasus yang hanya dapat ditangani dengan Tquery. - PowerPoint PPT Presentation

Transcript of Pemrograman Visual Borland Delphi 5.0 TQuery

Page 1: Pemrograman Visual Borland Delphi 5.0 TQuery

1

Pemrograman VisualBorland Delphi 5.0

TQuery

Page 2: Pemrograman Visual Borland Delphi 5.0 TQuery

2

TTable vs TQuery

Dalam banyak kasus, komponen Ttable sudah mencukupi untuk membangun aplikasi basis data. Namun ada beberapa kasus yang hanya dapat ditangani dengan Tquery.

Kasus pertama Bila mengakses beberapa tabel tetapi sebagai satu kesatuan contoh: menampilkan beberapa tabel dalam 1 tabel tunggal

Kasus kedua Bila ingin menghubung keserver database yang hanya memahami SQL.

Page 3: Pemrograman Visual Borland Delphi 5.0 TQuery

3

Perintah SQL ada 2

DML(Data menipulation Language) Perintah-perintah pada DML dugunakan

untuk manipulasi tabel seperti menambah record(insert), menghapus record(delete)

DDL(Data Definition Language) Perintah-perintah DDL digunakan untuk membuat table(Create table), membuat indek(Create Index)

Page 4: Pemrograman Visual Borland Delphi 5.0 TQuery

4

Komponen TQuery

Pemrograman SQL pada Delphi melibatkan komponan TQuery. Sebegai contoh buatlah aplikasi berikut

Tambahkan Komponen Query, Datasource, DBGrid

Query1 DatagbaseName

SQL

Active

DBDEMOS

Select * From Country

True

DataSource1 DataSet Query1

DBGrid1 Datasource Datasource1

Page 5: Pemrograman Visual Borland Delphi 5.0 TQuery

5

Lebih Jauh dengan SELECT

Select * From CountryTanda * pada perintah tersebut menunjukkan semua field pada country.db ditampilkan.

Select Name, Capital From CountryMenunjukkan field Nama dan Capital pada country.db ditampilkan.

Contoh Perintah Select lengkapSELECT [DISTINCT] kolom FROM tabel [WHERE kondisi_pencarian] [ORDER BY pengurutan] [GROUP BY group_list] [HAVING having_condition]

Huruf Besar : Kata kunci SQLParamater dalam kurung : opsional

Page 6: Pemrograman Visual Borland Delphi 5.0 TQuery

6

Klausa DISTINCT

Bila perintah Select diikuti DISTINCT menunkukkan bahwa record yang terduplikasi tidak akan ditampilkan, Bila tidak semua record akan ditampilkan.

SELECT DISTINCT CONTINENT FROM COUNTRY

Perintah diatas akan menampilkan daftar benua dari table country.db. Coba praktekkan pada aplikasi sebelumnya, tinggal merubah SQL.

Page 7: Pemrograman Visual Borland Delphi 5.0 TQuery

7

Klausa WHERE

Digunakan untuk memilih record yang akan ditampilkan. Sebagai contoh memilih negara pada Contry.db yang memiliki jumlah penduduk dari 100 juta digunakan perintah. SELECT * FROM COUNTRY WHERE POPULATION > 100000000Penduduk diantara 50 juta sampai 100 Juta

SELECT * FROM COUNTRY WHERE POPULATION >= 50000000 <= 100000000

Negara yang memiliki Huruf Awal “A”SELECT * FROM COUNTRY WHERE NAME LIKE

‘A%’

Negara yang memiliki Huruf akhir “a”SELECT * FROM COUNTRY WHERE NAME LIKE

‘%a’

Page 8: Pemrograman Visual Borland Delphi 5.0 TQuery

8

Klausa ORDER BY

Digunakan untuk mengurutkan table berdasarkan salah satu fiend, baik naik (ascending) maupun turun (descending). Sebagai contoh mengurutkan daftar negara berdasarkan ibukota SELECT * FROM COUNTRY ORDER BY CAPITAL

Seperti diatas tapi mengurutkan secara turunSELECT * FROM COUNTRY ORDER BY CAPITAL

DESC

Mengurutkan lebih dari 2 fieldSELECT * FROM COUNTRY ORDER BY

CONTINENT, NAME

Page 9: Pemrograman Visual Borland Delphi 5.0 TQuery

9

Klausa GROUP BY

Digunakan untuk mengelompokkan record menurut field tertentu. Contoh menampilakn daftar benua pada Caountry.db

SELECT CONTINENT FROM COUNTRY GROUP BY CONTINENT

Perintah diatas akan menampilkan 2 record, yaitu ‘Nort America’ dan ‘South America’

Page 10: Pemrograman Visual Borland Delphi 5.0 TQuery

10

Contoh SELECT

Buatlah aplikasi berikut :

Query1 DatagbaseName DBDEMOS

DataSource1 DataSet Query1

DBGrid1 Datasource Datasource1

Edit1 Text ‘’

BitBtn Kind OK

Page 11: Pemrograman Visual Borland Delphi 5.0 TQuery

11

Contoh SELECT

procedure TForm1.BitBtn1Click(Sender: TObject);begin Query1.Close;

Query1.SQL.Clear;Query1.SQL.Add (Edit1.Text);Query1.Open;

end;

Page 12: Pemrograman Visual Borland Delphi 5.0 TQuery

12

Query Berparameter

Berguna untuk meningkatkan fleksibilitas. Contohnya

Select * From countrywhere name like ‘A%’

Menjadi fleksibel dengan menjadikan ‘A%’ sebagai parameter. Jadi bisa diisi dengan string apa saja.

Select * From countrywhere name like :Nama

Parameter nama pada perintah di atas dapat diganti dengan string apa saja.

Page 13: Pemrograman Visual Borland Delphi 5.0 TQuery

13

Query Berparameter

Penulisan query parameter dengan memberi nilai properti params. Tapi sebelumnya harus memanggil metode prepare terlebih dulu, guna meningkatkan kinerja query berparameter.

{Menutup Query}Query1.close;{menyiapkan query berparameter}Query1.prepare;{Memilih negara yang namanya berawalan C}Query1.Params[0].AsString := ‘C%’;{Membuka Query lagi}Query1.Open;Dapat digantiQuery1.ParamByname(‘Nama’).AsString:=‘C%’;

Page 14: Pemrograman Visual Borland Delphi 5.0 TQuery

14

Menggunakan Fungsi Format

Alternatif lain dari query parameter, juga berguna untuk meningkatkan query parameter. Contoh:

Str:=‘SELECT * FROM COUNTRY WHERE CONTINENT = “%s”’;

Query1.Close;Query1.SQL.Clear;Query1.SQL.Add (Format(Str, [Edit1.Text]));Query1.Open;

Artinya menampilkan data yang mempunyai benua dengan huuf belakang s di Edit1.Text.

Page 15: Pemrograman Visual Borland Delphi 5.0 TQuery

15

Menggunakan Fungsi Format

Contoh lain bila menampilkan negara yang memiliki penduduk antara 25 juta sampai 150 juta :

Str:=‘SELECT * FROM COUNTRY’ + ‘WHERE POPULATION > %d AND POPULATION < %d’;

Query1.Close;Query1.SQL.Clear;Query1.SQL.Add (Format(Str, [25000000,15000000]));Query1.Open;

Page 16: Pemrograman Visual Borland Delphi 5.0 TQuery

16

Aplikasi Query Berparameter

Buatlah aplikasi berikut :Tambahkan komponen

Query1 DatagbaseName DBDEMOS

DataSource1 DataSet Query1

DBGrid1 Datasource Datasource1

Label1 Caption ‘Nama Negara’

Label2 Caption ‘Kota’

ComboBox1 - -

Edit1 Text ‘’

Button1 Caption ‘Fiter’

Button2 Caption ‘Default’

Page 17: Pemrograman Visual Borland Delphi 5.0 TQuery

17

Menggunakan Fungsi Format

procedure TForm1.FormCreate(Sender: TObject);var i : integer;begin ComboBox1.Items.Add('Semua'); for i := 0 to 25 do ComboBox1.Items.Add ( Format ('%s%%', [char (i+65)])); ComboBox1.ItemIndex := 0; end;

Page 18: Pemrograman Visual Borland Delphi 5.0 TQuery

18

procedure TForm1.Button1Click(Sender: TObject);var Str : String;begin Str := 'SELECT * FROM COUNTRY'; if (ComboBox1.Text <> 'Semua') then Str := Str + ' WHERE NAME LIKE "%s"'; if (Edit1.Text <> '') then if (ComboBox1.Text <> 'Semua') then Str := Str + ' AND CAPITAL = "%s"' else Str := Str + ' WHERE CAPITAL = "%s"';

if (ComboBox1.Text = 'Semua') then Str := Format (Str, [Edit1.Text]) else Str := Format (Str, [ComboBox1.Text, Edit1.Text]);

Query1.Close; Query1.SQL.Clear; Query1.SQL.Add (Str); Query1.Open;end;

Page 19: Pemrograman Visual Borland Delphi 5.0 TQuery

19

Menggunakan Fungsi Format

procedure TForm1.Button2Click(Sender: TObject);begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add ('SELECT * FROM COUNTRY'); Query1.Open;end;

Page 20: Pemrograman Visual Borland Delphi 5.0 TQuery

20

Manipulasi Data

INSERT INTO COUNTRY (NAME, CAPITAL, CONTINENT, AREA, POPULATION)VALUES (“Indonesia”, “Jakarta”, “Asia”, 5200000, 190000000)

Menggunakan INSERT

- Klausa INTO diikuti nama table yang akan ditambah record baru (sama seperti klausa FROM pada perintah SELECT)

- Diikuti nama field yang akan diisi- Klausa VALUES menunjukkan nilai-nilai field dari

record baru.

Page 21: Pemrograman Visual Borland Delphi 5.0 TQuery

21

Manipulasi Data

DELETE FROM COUNTRY WHERE NAME = : Nama

Menggunakan DELETE

Program yang berhubungan dengan pernyataan diatas dapat ditulis sebagai berikut :

With Query3 do Begin prepare; params[0].AsString := ‘Negara Saya’; ExexcSQL;End;

Query1.Close;Query1.Open;

Program diatas akan menghapus data ‘Negara Saya’ dari Country.db

Page 22: Pemrograman Visual Borland Delphi 5.0 TQuery

22

Manipulasi Data

Menggunakan UPDATEUntuk mengganti nilai field dari sebuah record dihunakan pasangan perintah UPDATE..SET. Sebagai contoh perintah di bawah ini akan mengganti jumlah penduduk negara indonesia menjadi 210 jutaUPDATE COUNTRY SET POPULATION = 21000000 WHERE NAME = “Indonesia”

Untuk mengganti beberapa field sekaligus, anda cukup menuliskan perintah SET sekali saja, contoh :

UPDATE COUNTRY SET CAPITAL = “DKI Jaya”, CONTINENT = “Asia tenggara”, POPULATION = 200000000 WHERE NAME = “Indonesia”

Page 23: Pemrograman Visual Borland Delphi 5.0 TQuery

23

Contoh

Form1 Caption ‘Menambah dan menghapus Data’

Button1 Caption ‘Menambah Data’

Button2 Caption ‘Menghapus Data’

Query1 DatabaseName ‘DBDEMOS’

DataSource1 DataSet Query1

DBGrid1 Align

DataSource

alButton

DataSource1

Query2 DatabaseName ‘DBDEMOS’

Query3 DatabaseName ‘DBDEMOS’

Page 24: Pemrograman Visual Borland Delphi 5.0 TQuery

24

Listing code private { Private declarations } StrTambah : string;

procedure TForm1.FormCreate(Sender: TObject);begin {Inisialisasi Query1} Query1.SQL.Clear; Query1.SQL.Add('SELECT * FROM COUNTRY'); Query1.Open;

{Inisialisasi perintah SQL untuk menambah data} StrTambah := 'INSERT INTO COUNTRY (' + 'NAME, CAPITAL, CONTINENT, AREA, POPULATION)' + 'VALUES ("%s", "%s", "%s", "%s", "%s")';

{Inisialisasi perintah SQL untuk menambah data} Query3.SQL.Clear; Query3.SQL.Add('DELETE FROM COUNTRY WHERE'); Query3.SQL.Add('NAME = :Nama');end;

Page 25: Pemrograman Visual Borland Delphi 5.0 TQuery

25

Listing code procedure TForm1.Button1Click(Sender: TObject);var i :integer;begin{Mengosongkan text pada Edit1..Edit5}for i := 0 to Form2.ControlCount - 1 do if (Form2.Controls[i] is TEdit) then (Form2.Controls[i] as TEdit).Clear; Form2.ActiveControl := Form2.Edit1; Form2.ShowModal; if (Form2.ModalResult = mrOK) then begin {Mengisi Query2 dengan perintah penambahan data} Query2.SQL.Clear; with Form2 do begin Query2.SQL.Add(Format ( StrTambah, [Edit1.Text, Edit2.Text, Edit3.Text, Edit4.Text, Edit5.Text])); end; Query2.ExecSQL; Query1.Close; Query1.Open; end;end;

Page 26: Pemrograman Visual Borland Delphi 5.0 TQuery

26

Listing code procedure TForm1.Button2Click(Sender: TObject);begin if (Application.MessageBox( 'Anda yakin record ini dihapus','Peringatan', MB_YESNO or MB_ICONQUESTION) = IDNO) then exit; With Query3 do begin {mengisi parameter} prepare; Params[0].AsString := Query1.Fields[0].AsString; ExecSQL; end; {Memperharui Data} Query1.Close; Query1.Open;

end;

Page 27: Pemrograman Visual Borland Delphi 5.0 TQuery

27

Memakai File Text

Anda dapat mengubah perintah SQL pada saat aplikasi dijalankan dengan memasukkan perintah-perintah SQL ke dalam file text dan membukanya pada saat aplikasi dijalankan.Lebih mudahnya buatlah aplikasi berikut ini :

Query1 : DataBase=DBDEMOSDataSource1:DataSet=Query1DBGrid1:DataSource=DataSourceOpenDialog1:Filter=…

File Text *.TXTFile SQL *.SQL BitBtn:Kind=bkOK

Page 28: Pemrograman Visual Borland Delphi 5.0 TQuery

28

Listing Code BitBtn

procedure TForm1.BitBtn1Click(Sender: TObject);begin if OpenDialog1.Execute then begin Query1.Close; Query1.SQL.Clear; Query1.SQL.LoadFromFile(OpenDialog1.FileName); Query1.Open; end;end;

Page 29: Pemrograman Visual Borland Delphi 5.0 TQuery

29

Listing Code

SELECT * FROM BioLife

SELECT * FROM BioLife WHERE Category=‘Cod’

SELECT Category, Commond_Name, “Species Name”, Length_in FROM BioLife

SELECT * FROM BioLife WHERE Category LIKE‘%C%’

Buatlah beberapa file text dan isikan Format berikut:

data4.txt

data3.txt

data2.txt

data1.txt

Page 30: Pemrograman Visual Borland Delphi 5.0 TQuery

30

Menampilkan gambar

Buatlah Aplikasi berikut untuk memahami field bertipe grapict (G)

Label1,2

ListBox1,2

DBImage1

Query1

DataSource1

DBGrid1

Page 31: Pemrograman Visual Borland Delphi 5.0 TQuery

31

Menampilkan gambar

Form1 Caption ‘Menampilkan gambar’

Label1 Caption ‘Min’

Label2 Caption ‘Max’

Query1 DatabaseName

SQL

Params

‘DBDEMOS’

‘SELECT * FROM BioLife WHERE BioLife.”Length (cm)” >= :Min AND BioLife.”Length (cm)” <= :Max’

ftFloat

DataSource1 DataSet Query1

DBGrid1 DataSource DataSource1

DBImage1 DataSource1

DataField

DataSource1

Graphic

Query3 DatabaseName ‘DBDEMOS’

Page 32: Pemrograman Visual Borland Delphi 5.0 TQuery

32

Listing Code BitBtn

procedure TForm1.FormCreate(Sender: TObject);Var i : integer; S : String;begin for i:=0 to 40 do begin S := IntToStr(i*10) ; ListBox1.Items.Add(S); ListBox2.Items.Add(S); end; ListBox1.ItemIndex:=0; ListBox2.ItemIndex:=0;end;

Klik ganda pada form untuk memebuat procedure Form1Create

Page 33: Pemrograman Visual Borland Delphi 5.0 TQuery

33

Listing Code BitBtn

procedure TForm1.ListBox1Click(Sender: TObject);begin Query1.Close; Query1.Prepare; Query1.Params[0].AsFloat :=

StrToInt(ListBox1.Items.Strings[ListBox1.Itemindex]); Query1.Params[1].AsFloat :=

StrToInt(ListBox2.Items.Strings[ListBox2.Itemindex]) ; Query1.Open ;end;

Klik ganda pada ListBox1 untuk memebuat procedure ListBox1Click

Lakukan hal yang sama dengan ListBox2

Page 34: Pemrograman Visual Borland Delphi 5.0 TQuery

34

DBLookupComboBox

Komponen untuk menghubungkan 2 tabel dan dapat berhubungan dengan 2 datasource sekaligus.Sebagai contoh buatlah aplikasi berikut ini :

5 Label

4 DBEdit

1 DBLookupComboBox

2 Query

2 DataSource

1 DBNavigator

Page 35: Pemrograman Visual Borland Delphi 5.0 TQuery

35

DBLookupComboBoxQuery1 DatabaseName

SQL

Active

DBDEMOS

SELECT * FROM Orders

True

Query2 DatabaseName

SQL

Active

DBDEMOS

SELECT * FROM Customer

True

DataSource1 DataSet Query1

DataSource2 DataSet Query2

DBNavigator DataSource DataSource1

4 Buah DBEdit DataSource

DataField

DataSource1

OrderNo,SaleData,ShipDate,EmpNo

DBLookupComboBox1 DataField

DataSource

ListSource

KeyField

ListField

DropDownWidth

CustNo

DataSource1

DataSource2

CustNo

Company;CustNo

300

Page 36: Pemrograman Visual Borland Delphi 5.0 TQuery

36

DBLookupComboBox

- Properti DataField dan DataSource menyatakan hubungan utama ke tabel Order.

- Ketiga properti berikut mengacu pada data source kedua- KeyField : menyatakan field yang dipakai untuk

menghubungkan kedua data source.- ListSource : menyatakan data source kedua- ListField : Menyatakan Field-field yang akan ditampilkan.

- Properti DropDownWidth diisi dengan nilai yang besar untuk menampilkan beberapa field

Page 37: Pemrograman Visual Borland Delphi 5.0 TQuery

37

DBLookupComboBox

Page 38: Pemrograman Visual Borland Delphi 5.0 TQuery

38

Membuat Grafik Lingkaran

Data yang ditampilkan dalam bentuk grafik mempunyai beberapa keuntungan:

- Lebih indah dilihat- Dipakai untuk melaporkan data ke pemimpin- Untuk presentasi

Ada beberapa jenis grafik di antaranya, lingkaran, garis, bar, anak panah, gelembung dan pemakaiannya tergantung kebutuhan (data yang akan ditampilkan) misalkan jika data yang ditampilkan banyak, yang digunakan grafik garis atao point tidak bisa menggunakan lingkaran……

Page 39: Pemrograman Visual Borland Delphi 5.0 TQuery

39

Membuat Grafik Lingkaran

Untuk lebih mudahnya buatlah aplikasi berikut :

Page Control dari tab win32Klik kanan New Page

1 Query, 1 DataSource

1 Timer dari tab System

Komponen Pada TabSheet1- DBGrid

Komponen Pada TabSheet2- DBChart

Page 40: Pemrograman Visual Borland Delphi 5.0 TQuery

40

Mengurutkan Data

Untuk mengurutkan data pada komponen Query anda harus memakai klausa ORDER BY dan field yang diurutkan tidak perlu diindex (bandingkan dengan komponen Table)

Query1 DatabaseName DBDEMOS

DataSource1 DataSet Query1

DBGrid1 DataSource DataSource1

RadioGroup Items Category

Species Name

Category + Species Name

Page 41: Pemrograman Visual Borland Delphi 5.0 TQuery

41

Listing Program

Isikan Procedure RadioGroup1Click sebegai berikutprocedure TForm1.RadioGroup1Click(Sender: TObject);var str : string ;begin str := 'select * from BioLife order by '; case RadioGroup1.ItemIndex of 0 : str := str + 'Category'; 1: str := str + 'BioLife."Species Name"'; 2 : str := str + ' Category, Biolife."Species Name"'; end; with Query1 do begin SQL.Clear; SQL.Add(str); Open; end;end;

Page 42: Pemrograman Visual Borland Delphi 5.0 TQuery

42

Fungsi Agregasi

SQL mempunyai kemampuan menghitung fungsi-fungsi berdasarkan kelompok data. Fungsi-fungsi tersebut memakai klausa group by. Atribut pada klausa group by dipakai untuk membentuk kelompok.

Fungsi² agregasi:

Avg, untuk menghitung rata²Min, untuk mencari minimumMax, untuk mencari MaksimumSum, Untuk menghitung totalCount, Untuk menghitung banyak data

Page 43: Pemrograman Visual Borland Delphi 5.0 TQuery

43

Fungsi Agregasi

Query1 DatabaseName

SQL

DBDEMOS

SELECT CATEGORY, COUNT(BIOLIFE.”SPECIES NO)”), AVG(LENGTH_IN) FROM BIOLIFE GROUP BY CATEGORY

DataSource1 DataSet Query1

DBGrid1 DataSource DataSource1

Page 44: Pemrograman Visual Borland Delphi 5.0 TQuery

44

Menggabungkan beberapa tabel

Sama seperti pada komponen table, untuk komponen query juga dapat digunakan untuk menggabungkan beberapa tabel. Sebagai contoh DBDEMOS terdapat beberapa tabel yang berhubungan misalnya Customer.db dan Orders.db, contoh perintah untuk menggabngkan tabel tersebut :

SELECT C.CustNo, O.OrderNo, O.SaleDate, O.ShipDateFROM CUSTOMER C, ORDERS OWHERE C.CustNo = O.CustNo

Perintah Diatas terdiri dari 3 bagian

Page 45: Pemrograman Visual Borland Delphi 5.0 TQuery

45

Menggabungkan beberapa tabel

- Bagian pertama adalah memilih field yang akan ditampilkan dengan klausa SELECT.

- Bagian kedua, tabel yang dibaca (‘FROM CUSTOMER C, ORDERS, O’)

arti : tabel C sama dengan Customer.db dan O sama dengan Orders.db

- Bagian ketiga, bagian ini untuk menghubungkan tabel Customes.db dan Orders.db dihubungkan oleh field CustNo

Page 46: Pemrograman Visual Borland Delphi 5.0 TQuery

46

Contoh

Form1 Caption ‘Penggabungan beberapa tabel’

Query1-Query4 Databasename ‘DBDEMOS’

DataSource1 Caption Query1

DBGrid1 DatabaseName DataSource1

DataSource2 DataSet Query2

DBGrid2 DataSource DataSource2

DataSource3 Dataset Query3

DBGrid3 DataSource DataSource3

DataSource4 DataSet Query4

DBGrid4 DataSource DataSource4

Page 47: Pemrograman Visual Borland Delphi 5.0 TQuery

47

Listing code procedure TForm1.FormCreate(Sender: TObject);begin { Inisialisasi Query1} Query1.DatabaseName := 'DBDEMOS'; Query1.SQL.Clear; Query1.SQL.Add ('SELECT * FROM CUSTOMER'); Query1.Open;

{ Inisialisasi Query1} Query2.DatabaseName := 'DBDEMOS'; Query2.SQL.Clear; Query2.SQL.Add ('SELECT * FROM ORDERS'); Query2.SQL.Add ('WHERE CustNo = :CustNo'); Query2.Params[0].DataType := ftFloat; Query2.DataSource := DataSource1; Query2.Open;

Page 48: Pemrograman Visual Borland Delphi 5.0 TQuery

48

Listing code { Inisialisasi Query1} Query3.DatabaseName := 'DBDEMOS'; Query3.SQL.Clear; Query3.SQL.Add ('SELECT * FROM ITEMS'); Query3.SQL.Add ('WHERE OrderNo = :OrderNo'); Query3.Params[0].DataType := ftFloat; Query3.DataSource := DataSource2; Query3.Open;

{ Inisialisasi Query1} Query4.DatabaseName := 'DBDEMOS'; Query4.SQL.Clear; Query4.SQL.Add ('SELECT * FROM PARTS'); Query4.SQL.Add ('WHERE PartNo = :PartNo'); Query4.Params[0].DataType := ftFloat; Query4.DataSource := DataSource3; Query4.Open;end;