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 PresentationTRANSCRIPT
1
Pemrograman VisualBorland 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.
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)
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
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
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.
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’
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
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’
10
Contoh SELECT
Buatlah aplikasi berikut :
Query1 DatagbaseName DBDEMOS
DataSource1 DataSet Query1
DBGrid1 Datasource Datasource1
Edit1 Text ‘’
BitBtn Kind OK
11
Contoh SELECT
procedure TForm1.BitBtn1Click(Sender: TObject);begin Query1.Close;
Query1.SQL.Clear;Query1.SQL.Add (Edit1.Text);Query1.Open;
end;
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.
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%’;
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.
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;
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’
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;
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;
19
Menggunakan Fungsi Format
procedure TForm1.Button2Click(Sender: TObject);begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add ('SELECT * FROM COUNTRY'); Query1.Open;end;
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.
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
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”
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’
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;
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;
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;
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
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;
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
30
Menampilkan gambar
Buatlah Aplikasi berikut untuk memahami field bertipe grapict (G)
Label1,2
ListBox1,2
DBImage1
Query1
DataSource1
DBGrid1
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’
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
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
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
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
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
37
DBLookupComboBox
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……
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
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
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;
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
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
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
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
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
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;
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;