Bab XI
Pencarian Data
Salah satu konsep pemograman
berbasis data base proses pencarian data menjadi satu hal yang sangat
penting didalam mendukung kesempurnaan hasil didalam sebuah aplikasi
program. Fungsi secara umum adanya pencarian data adalah untuk
mendapatkan secara cepat data yang diinginkan dari sebuah tabel didalm
sebuah database.
11.1 Konsep Pemograman Pencarian Data
b Konsep Pencarian dengan Properti
Konsep ini merupakan metode pencarian data dimana memanfaatkan kemampuan property untuk mendapatkan data yang diinginkan
Ada 5 konsep pencarian data dengan property
1. Locate
Locate
adalah metode pencarian data untuk record yang sama dengan criteria
yang sudah ada ataupun mendekati dengan kriteria yang ada. Pencarian
locate dapat digunakan untuk tabel dengan index maupun yang tanpa index
Contoh
If not table1.locate (‘nama’, enama.text, []) then
Messagedlg(‘”’ + enama.text + ‘ “ Tdak ditemukan’, mterror, [mbok],0);
2. Findkey
Metode finkey digunakan mencari record yang sama . Metode ini dapat digunakan untuk tabel dengan index.
Contoh
Table1.indexname := ‘ ‘;
If not table1.findkey ([‘00099’]) then
Messagedlg(‘data Tdak ditemukan’, mterror, [mbok],0);
Proses
pencarian data diatas digunakan untuk table dengan index sebagai
primary key. Sedangkan untuk pencarian dengan indes secondary dapat
terlihat seperti contoh berikut ini.
Table1.indexname := ‘nama’;
If not table1.findkey([enama.text]) then
Messagedlg(‘”’ + enama.text + ‘ “ Tdak ditemukan’, mterror, [mbok],0);
Else
Tampil;
3. Find Nearest
Metode ini digunakan untuk tabel dengan index selaian itu juga dapat digunakan untuk pencarian record yang paling mendekati.
Contoh
Table1.indexname ;= ‘nama’;
Table1.findnearest([enama.text])
4. Gotokey
Metode
ini sama seperti dengan metode dengan findkey, tetapi dalam hal
penulisan lebih rumit karena harus menjalankan terlebih dahulu event
Setkey ataupun editkey. Konsep ini juga dapat digunakan untuk tabel
dengan index maupun tidak.
Contoh
Table1.setkey;
Table1.fieldbyname(‘nama’).Asstring := enama.text;
If not table1.gotokey then
Messagedlg(‘”’ + enama.text + ‘ “ Tdak ditemukan’, mterror, [mbok],0);
Else
Tampil;
5. Gotonearest
Metode ini hampis sama dengan metoded findnearest. Perbedaan utamanya hanya dalam hal penulisan.
Contoh
Table1.setkey
Table1.fieldbyname(‘nama’).Asstring := enama.text;
Table1.gotokey;
b Konsep pencarian data dengan perintah SQL
Metode
ini merupakan metode pencarian data yang banyak digunakan oleh para
pengembang aplikasi karena konsep ini dapat digunakan untuk semua bahasa
pemograman dengan berbagai macam database. Luwes merupakan salah satu
keunggulan penggunaan konsep pencarian dengan perintah SQl. Selain itu
konsep yang digunakan tidak perlu mengingat property yang digunakan.
Contoh
Var strsql : string;
Begin
Strsql := ‘Select * from barang where nama like “’ + enama.text +’%” ‘;
Query1.sql.clear;
Query1.sql.add(strsql);
Query.close;
Query.open;
End;
11.2. Aplikasi Program Pencarian Data
a. Dengan Propeti
1. Hasil Form Setelah Dijalankan
2. Desain Form
3. Desain Properties
Catatan = Koneksi table dan data base akan dilakukan secara programming, jadi untuk setting properties tidak perlu disetup.
Object Properties
Name Caption/text
Group Box1 Group Box1 Cari Data Barang
Edit1 Ecari -
Edit2 Enmbarang -
Edit3 Ehrgbeli -
Edit4 Kdpemasok -
Label1 Label1 Kode Barang
Label2 Label2 Nama Barang
Label3 Label3 Harga Beli
Label4 Label4 Kode Pemasok
Button1 Ecari Cari
Button2 Ebatal Batal
Button3 Eclose Close
Object Data Base Name Table Name
Table1 - -
Object Data Set
Data Source1 -
Object Data Source
Dbgrid1 -
Object Active
Table1 -
4. Listing Program
Ketika pada saat program dijalankan maka proses koneksi program akan diaktifkan selama form tersebut diaktifkan.
procedure TForm11.FormCreate(Sender: TObject);
begin
table1.DatabaseName := 'penjualan' ;
table1.TableName := 'barang.db';
table1.Active:= true;
datasource1.DataSet:= table1;
dbgrid1.DataSource := datasource1;
end;
Program
pencarian dimulai dengan input kode barang pada txtcari dan diakhiri
dengan button cari. Jika data barang tidak ditemukan maka akan
ditampilkan pesan, tetapi jika tditemukan maka data barang akan
ditampilkan.
procedure TForm11.bcariClick(Sender: TObject);
begin
table1.IndexName := '';
if not table1.FindKey([ecari.Text]) then
begin
showmessage('Data Belum ada');
exit;
form11.ActiveControl := ecari;
end
else
enmbarang.Text := table1['nmbarang'];
ehrgbeli.Text := table1['hrgbeli'];
ekdpemasok.Text := table1['kdpemasok'];
end;
Penjelasan
Table1.indexname
:= ‘ ‘ menunjukan bahwa proses pencarian deengan memanfaatkan kunci
utama (primary key), sehingga koneksi program dianjurkan dengan
menggunakan metode findkey. If Not table1.findkey([ecari.text])
menunjukan bahwa jika data tidak ada, maka akan ditampilkan pesan bahwa
tidak ditemukan dan kursor dikembalikan ke txtcari, tetapi jika ada maka
data akan ditampilkan.
Program untuk membatalkan proses pencarian dengan mengaktifkan txtcari kembali.
procedure TForm11.bbatalClick(Sender: TObject);
begin
ecari.Text := '';
form11.ActiveControl := ecari;
end;
Program untuk menutup form
procedure TForm11.bbatalClick(Sender: TObject);
begin
ecari.Text := '';
form11.ActiveControl := ecari;
end;
b. Dengan Metode SQl
1. Hasil Setelah Form Dijalankan
2. Desain Form
3. Desain Properties
Catatan
= untuk koneksi dengan perintah SQL maka icon table tidak dibutuhkan
tetapi icon query yang dibutuhkan. Icon Query terdapat dalam tab BDE.
Object Properties
Name Caption/text
Group Box1 Group Box1 Cari Data Barang
Edit1 Ecari -
Label1 Label1 Nama Barang
Button1 Ecari Cari
Button2 Ebatal Batal
Button3 Eclose Close
Object Data Base Name Table Name
Query1 - -
Object Data Set
Data Source1 -
Object Data Source
Dbgrid1 -
Object Active
Query -
4. Listing Program
Program koneksi dengan perintah SQl.
procedure TForm12.FormCreate(Sender: TObject);
//var strsql : string;
begin
query1.DatabaseName := 'penjualan';
query1.SQL.Add ('Select * from barang');
query1.Active := true;
datasource1.DataSet := query1;
dbgrid1.DataSource := datasource1;
end;
Penjelasan
Secara
umum koneksi databse dan tabel hampir sama dengan koneksi dengan icon
table, hanya terdapat perbedaan ketika harus mengkatifkan tabel. Dengan
query harus dituliskan sintaks perintah SQL. Kondisi ini lebih luwes
karena bisa menampilkan data lebih dari satu tabel.
Program pencarian nama
procedure TForm12.bcariClick(Sender: TObject);
var strsql : string;
begin
strsql := 'Select * from barang where nmbarang like "' + ecari.Text + '%"';
query1.SQL.Clear;
query1.SQL.Add(strsql);
query1.Close;
query1.Open;
end;
Program Untuk mengembalikan data ke semua record
procedure TForm12.bbatalClick(Sender: TObject);
var sql : string;
begin
sql := 'Select * from barang' ;
query1.SQL.Clear;
query1.SQL.Add(sql);
query1.Close;
query1.Open;
end;
Program menutup Form
procedure TForm12.bcloseClick(Sender: TObject);
begin
close;
end;