Mencari Data
Pencarian data
Dalam hal pemrograma database fasilitas untuk pencarian data mutlak harus tersedia. Fasilitas ini didesign sedemikian hingga, sehingga para user akan mudah dalam hal melakukan pencarian atau
penelusuran data. Pencarian data bisa dilakukan hanya untuk satu record data tetapi juga pencarian bisa
dilakukan untuk kumpulan record tertentu yang berdasarkan pada kriteria tertentu.
Untuk melakukan pencarian maka sebelum dilakukan pencarian perlu ditentukan dahulu key atau kata
kunci untuk pencarian tersebut. Key inilah yang akan menjadi pintu pembuka terhadap record yang akan
dicari. Dalam sebuah tabel biasanya terdapat satu key tetapi tidak tertutup kemungkinan untuk membuat
beberapa key dalam sebuah tabel.
Ada lima fungsi yang berhubungan dengan pencarian data yang telah disedikan oleh Delphi. Yang ratarata fasilitas pencarian ini mensyaratkan sebuah tabel yang akan dilakukan pencarian telah di indek
berdasarkan pada key tertentu. Fungsi-fungsi tersebut adalaha : Finfkey(), FindNearest, Setkey, GotoKey
dan GotoNearest.
FindKey
Findkey digunakan untuk mencari data berdasarkan key tertentu. Kata kunci untuk pencarian harus sama
dengan data yang berada pada tabel. Fungsi ini akan mengembalikan nila true jika data yang dicari
ditemukan dalam tabel dan akan memindahkan posisi record aktif ke record data yang dicari, dan
sebaliknya akan mengembalikan nilai false jika data yang dicari tidak diketemukan dalam tabel.
Fungsi Findkey adalah sebuah fungsi yang berada pada objek table, jadi untuk menggunakan fungsi ini
harus disebutkan dahulu nama tabelnya. Sebagai contoh akan dicari data mahasiswa berdasarkan NIM
tertentu maka bentuk tulisan programnya sbb:
If table1.FindKey([‘3205000’]) then
Begin
{Data ketemu maka lakukan ini}
End
Else
Begin
{Data tidak ketemu lakukan ini}
End;
Jika dalam sebuah tabel terdapat beberapa indek (Lebih dari satu) maka harus dituliskan berdasarkan
indek mana akan dilakukan pencarian data. Bila tidak dilakukanmaka Delphi akan menganggap indek
primer-lah yang akan digunakan dalam pencarian.
Untuk memberitahukan atau mengaktifkan indek tertentu tuliskanlah pada objek table pada fungsi
IndexName dengan nama indeksnya. Misalkan dalam sebuah tabel mahasiswa terdapat indek primer
‘WithNIM’ dan indek sekunder dengan nama ‘WithName’. Untuk mencari berdasarkan NIM cukup
dituliskan sbb:
If Table1.FindKey([‘3205000’]) then
Atau bisa juga seperti berikut ini :
Table1.IndexName:=’WithName’;
If Table1.FindKey([‘3205000’]) then
ARSys Software Solution/Delphi/Database2
22
Mencari Data
Tetapi jika diinginkan untuk mencari berdasarkan nama tertentu maka perlu dikaktifkan indek yang
berdasarkan namanya.
Table1.IndexName:=’WithName’;
If Table1.FindKey([‘AbdRohim’]) then
FindNearest
FindNearest digunakan untuk mencari data berdasarkan key tertentu yang kata kuncinya diketahui
sebagian atau tidak lengkap. Misalnya akan dicari nama AbdRohim tetapi diketahui hanya Abd saja,
maka untuk kasus-kasus seperti ini-lah fungsi ini akan berfungsi.
Berbeda dengan fungsi Findkey yang akan mengembalikan nilai true atau false. Funsi FindNearst ini tidak
mengembalikan nilai tetapi akan mengubah posisi record aktif ke data atau record yang paling mirip
dengan data yang dicari.
Penggunaan fungsi ini hampir sama dengan fungsi findkey, karena fungsi ini juga berada dalam objek
table. Contoh cara penulisan sbb:
Table1.FindNearest([‘Abd’]) then
ApplyRange dan CancelRange
ApplyRange digunakan untuk membatasi record aktif yang dapat ditampilkan berdasarkan batasan
tertentu. Batasan ini berupa range yang berisi nilai awal dan nilai akhir dari daya yang akan diaktifkan.
Misalnya akan diaktifkan NIM mulai 3297001 sampai dengan NIM 32970100
Untuk membuat batasan record ini digunakan fungsi SetRangeStart dan SetRangeEnd yang menamdai
record awal dan record akhir dari sebuah applyrange. Contoh program yang mengunkan applyrange sbb:
{menentukan batas awal}
Table1.SetRangeStart;
Table1NIM.Value :=’3205001’
{Menetukan batas akhir}
Table1.SetRangeEnd;
Table1NIM.Value:=’3205100’;
Table1.ApplyRange;
Untuk menghilangkan pengaruh dari ApplyRange ini dan mengembalikan record yang aktif seperti semua
(aktif semua) maka gunakn perintah CancelRange. Cara penulisanya hampir sama dengan perintah
applyrange.
Penulisan applyrange yang harus menggunakan funsi SerRangeStart dan SetRangeEnd bisa disingkat
dengan mengunakan fungsi SetRange seperti terlihat pada program berikut ini:
Table1.SetRange(‘3205001’,’3205100’)
Table1.ApplyRange;
ARSys Software Solution/Delphi/Database2
23
Mencari Data
Latihan 2. a
Buatlah program berikut ini:
Lakukanlah langkah-langkah berikut ini:
1.
2.
3.
Buka project baru.
Tempatkan tiga buah panel pada form, aturlah properti untuk panel tersebut sbb:
Komponen
Properti
Nilai
Panel1
Align
AlTop
BevelOuter
BvLowered
(Kosongkan)
Caption
Panel2
Align
alBottom
BevelOuter
BvLowered
Caption
(Kosongkan)
Panel3
Align
alClient
BevelOuter
BvLowered
Caption
(Kosongkan)
Tempatkan pada Panel1 1 buah Table, 1 buah DataSource, 1 buah Lable, 1 buah Edit dan 1 buah
Button.
ARSys Software Solution/Delphi/Database2
24
Mencari Data
4.
5.
6.
Tempatkan pada Panel2 1 buah BitBtn
Tempatkan pada Panel3 1 buah DBGrid
Isikan nilai-nilai pada properti sbb:
Komponen
Properti
Table1
DataBaseName
Name
TableName
Active
DataSource
DataSet
Name
Label1
Caption
Edit1
Name
Text
Button1
Caption
Name
BitBtn1
Kind
DBGrid
DataSource
+Option
(Double klik pada kata
tersebut)
- DgRowSelect
- dgAlwayShow
Nilai
DBKURSUS
TbBarang
PARTS.DB
TRUE
TbBarang
dsBarang
Part No.
EdCari
(Kosongkan)
&Cari Part No.
btnCari
bkClose
DsBarang
True
true
7.
Simpanlah program ini. Aturlah posisi direktori sesuai dengan petunjuk dari assistenya. Nama Unit
adalah Latih2a.Pas dan Nama Project Latihan2a.Dpr
8. Double klik pada button Cari Part No. tuliskanlah program berikut ini:
procedure TfmLatih2a.btnCariClick(Sender: TObject);
begin
if tbBarang.FindKey([edCari.Text]) then
ShowMessage('Data ketemu')
else
ShowMessage('Data tidak ketemu');
end;
9. Simpan kembali programnya
10. Run-lah programnya
11. Isikan pada Part No. dengan 100 ! apa yang terjadi ?
12. Isikan pada Part No. dengan 1313 ! apa yang terjadi ?
ARSys Software Solution/Delphi/Database2
25
Mencari Data
Latihan 2. b
Buatlah program berikut ini:
Lakukanlah langkah-langkah berikut ini:
1.
2.
3.
4.
5.
Buka project baru.
Tempatkan 3 buah Panel pada form, aturlah properti untuk panel tersebut sbb:
Komponen
Properti
Nilai
Panel1
Align
AlTop
BevelOuter
BvLowered
Caption
(Kosongkan)
Panel2
Align
alBottom
BevelOuter
BvLowered
Caption
(Kosongkan)
Panel3
Align
alClient
BevelOuter
BvLowered
Caption
(Kosongkan)
Tempatkan pada Panel1 4 buah Button, 3 buah Label dan 3 buah Edit
Tempatkan pada Panel2 1buah BitBtn
Tempatkan pada Panel3 1 buah DBGrid
ARSys Software Solution/Delphi/Database2
26
Mencari Data
6.
7.
8.
Isikan nilai-nilai pada properti sbb:
Komponen
Properti
Button1
Caption
Name
Button2
Caption
Name
Button3
Caption
Name
Button4
Caption
Name
Label1
Caption
Label2
Caption
Label3
Caption
Edit1
Name
Text
Edit2
Name
Text
Edit3
Name
Text
Table1
DataBaseName
Name
TableName
Active
DataSource
DataSet
Name
BitBtn1
Kind
DBGrid
DataSource
+Option
(Double klik pada kata
tersebut)
- DgRowSelect
- dgAlwayShow
Nilai
&Cari Part No. dengan FindKey
btnFindKey
&Cari Part No. dengan FindNearest
btnFindNearest
&Apply Range
btnApplyRange
&Cancel Range
btnCancelRange
Part No.
Range Awal
Range Akhir
EdCari
(Kosongkan)
EdAwal
(Kosongkan)
EdAkhir
(Kosongkan)
DBKURSUS
TbBarang
PARTS.DB
TRUE
TbBarang
dsBarang
bkClose
DsBarang
True
true
Simpanlah program ini. Aturlah posisi direktori sesuai dengan petunjuk dari assistenya. Nama Unit
adalah Latih2b.Pas dan Nama Project Latihan2b.Dpr
Double klik pada btnFindKey. Tuliskan program berikut ini:
procedure TfmLatih2b.btnFindKeyClick(Sender: TObject);
begin
if edCari.Text<>'' then begin
if tbBarang.FindKey([edCari.Text]) then
ShowMessage('Data ketemu')
else
ShowMessage('Data tidak ketemu');
end else
ShowMessage('Isikan dahulu data yang akan dicari');
end;
ARSys Software Solution/Delphi/Database2
27
Mencari Data
9.
Kembali pada form. Double Klik pada button btnFindNearest. Tuliskan program berikut ini:
procedure TfmLatih2b.btnFindNearestClick(Sender: TObject);
begin
if edCari.Text<>'' then
tbBarang.FindNearest([edCari.Text])
else
ShowMessage('Isikan dahulu data yang akan dicari');
end;
10. Kembali pada form. Double klik pada button btnApplyRange. Tuliskan program berikut ini:
procedure TfmLatih2b.btnApplyRangeClick(Sender: TObject);
begin
if (edAwal.Text<>'') and (edAkhir.Text<>'')then
begin
tbBarang.SetRange([edAwal.Text],[edAkhir.Text]);
tbBarang.ApplyRange;
end
else
ShowMessage('Isikan dahulu range awal dan range akhir');
end;
11. Kembali pada form. Double klik pada button btnCancelRange. Tuliskan program berikut ini:
procedure TfmLatih2b.btnCancelRangeClick(Sender: TObject);
begin
tbBarang.CancelRange;
end;
12. Simpan kembali programnya
13. Run-lah. Cobakan semua tombol dengan setiap keadaan yang berbeda !
ARSys Software Solution/Delphi/Database2
28
Mencari Data
Latihan 2. c
Buatlah program berikut ini:
Lakukanlah langkah-langkah berikut ini:
1.
2.
3.
4.
5.
6.
Buka project baru.
Tempatkan 3 buah Panel pada form, aturlah properti untuk panel tersebut sbb:
Komponen
Properti
Nilai
AlTop
Panel1
Align
BvLowered
BevelOuter
(Kosongkan)
Caption
Panel2
Align
alBottom
BevelOuter
BvLowered
Caption
(Kosongkan)
Panel3
Align
alClient
BevelOuter
BvLowered
Caption
(Kosongkan)
Tempatkan pada Panel1 1 buah Label dan 1 buah Table dan 1 buah DataSource
Tempatkan pada Panel2 1 buah BitBtn
Tempatkan pada Panel3 5 buah Label, 5 buah Edit dan 1 buah Button
Isikan nilai-nilai pada properti sbb:
Komponen
Properti
Nilai
Label1
AutoSize
False
Caption
Menampilkan Data
+Font
MS Sans Serif Bold 14
DBKURSUS
Table1
DataBaseName
TbBarang
Name
PARTS.DB
TableName
TRUE
Active
DataSource
DataSet
TbBarang
Name
dsBarang
BitBtn1
Kind
bkClose
Label2
Caption
Part No.
Label3
Caption
Description
Label4
Caption
Stock On Hand
ARSys Software Solution/Delphi/Database2
29
Mencari Data
Label5
Label6
Edit1
Edit2
Edit3
Edit4
Edit5
Edit6
Button1
7.
8.
Caption
Caption
Name
Text
clBtnFace
Name
Text
clBtnFace
Name
Text
clBtnFace
Name
Text
clBtnFace
Name
Text
clBtnFace
Name
Text
Caption
Name
Cost
Price
EdPartNo
(Kosongkan)
clBtnFace
EdPartNo
(Kosongkan)
clBtnFace
EdDesc
(Kosongkan)
clBtnFace
edOnHand
(Kosongkan)
clBtnFace
edCost
(Kosongkan)
clBtnFace
edPrice
(Kosongkan)
&Cari
btnCari
Simpanlah program ini. Aturlah posisi direktori sesuai dengan petunjuk dari assistenya. Nama Unit
adalah Latih2c.Pas dan Nama Project Latihan2c.Dpr
Double klik pada Button btnCari. Tuliskan program berikut ini:
procedure TfmLatih2c.btnCariClick(Sender: TObject);
begin
ActiveControl:=edPartNo;
edDesc.Text := '';
edOnHand.Text:= '';
edCost.Text := '';
edPrice.Text := '';
if edPartNo.Text<>'' then
begin
if tbBarang.FindKey([edPartNo.Text])then
begin
edDesc.Text := tbBarangDescription.Value;
edOnHand.Text:= FloatToStr(tbBarangOnHand.Value);
edCost.Text := FloatToStr(tbBarangCost.Value);
edPrice.Text := FloatToStr(tbBarangListPrice.Value);
end
else
ShowMessage('Data tidak ada');
end else
ShowMessage('Isikan dahulu Part No. yang dicari');
end;
9. Simpan kembali programnya
10. Jalankan programnya
ARSys Software Solution/Delphi/Database2
30
Mencari Data
Latihan 2. d
Buatlah sebuah program yang dapat mencari suatu data berdasarkan pada beberapa key. Untuk itu telah
disediakan sebuah tabel EMPLOYEE.DB yang terdapat pada DBKURSUS. Pada tabel EMPLOYEE.DB
terdapat dua buah indek, sebagai primary indek adalah EmpNo yang berjenis data Integer dan secondary
yang diberi nama ByName berdasarkan nama yang berjenis data string.
Bentuk tampilan yang dinginkan seperti berikut ini:
ARSys Software Solution/Delphi/Database2
31