LATIHAN 2 Mencari Data ARSys Software Developed/AbdRohim 22
Dalam hal pemrograma database fasilitas untuk pencarian data mutlak harus tersedia. Fasilitas ini di-design 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 rata-rata 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([ 3297077 ]) 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 Index dengan nama indeksnya. Misalkan dalam sebuah tabel mahasiswa terdapat indek primer WithNIM dan indek sekunder dengan nama With. Untuk mencari berdasarkan NIM cukup dituliskan sbb: If Table1.FindKey([ 3297077 ]) then Atau bisa juga seperti berikut ini : Table1.Index:= With ; If Table1.FindKey([ 3297077 ]) then ARSys Software Developed/AbdRohim 23
Tetapi jika diinginkan untuk mencari berdasarkan nama tertentu maka perlu dikaktifkan indek yang berdasarkan namanya. Table1.Index:= With ; 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 := 3297001 {Menetukan batas akhir} Table1.SetRangeEnd; Table1NIM.Value:= 3297100 ; 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 disingka dengan mengunakan fungsi SetRange seperti terlihat pada program berikut ini: Table1.SetRange( 3297001, 3297100 ) Table1.ApplyRange; ARSys Software Developed/AbdRohim 24
Latihan 2. a Buatlah program berikut ini: Lakukanlah langkah-langkah berikut ini: 1. Buka project baru. 2. Tempatkan tiga buah panel pada form, aturlah properti untuk panel tersebut sbb: Panel1 Panel2 Panel3 AlTop albottom alclient 3. Tempatkan pada Panel1 1 buah Table, 1 buah DataSource, 1 buah Lable, 1 buah Edit dan 1 buah Button. ARSys Software Developed/AbdRohim 25
4. Tempatkan pada Panel2 1 buah BitBtn 5. Tempatkan pada Panel3 1 buah DBGrid 6. Isikan nilai-nilai pada properti sbb: Table1 DataBase Table Active DBKURSUS PARTS.DB TRUE DataSource DataSet dsbarang Label1 Part No. Edit1 EdCari Button1 &Cari Part No. btncari BitBtn1 Kind bkclose DBGrid DataSource +Option (Double klik pada kata tersebut) DsBarang - DgRowSelect True - dgalwayshow 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); if tbbarang.findkey([edcari.]) then ShowMessage('Data ketemu') else ShowMessage('Data tidak ketemu'); 9. Simpan kembali programny 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 Developed/AbdRohim 26
Latihan 2. b Buatlah program berikut ini: Lakukanlah langkah-langkah berikut ini: 1. Buka project baru. 2. Tempatkan 3 buah Panel pada form, aturlah properti untuk panel tersebut sbb: Panel1 Panel2 Panel3 AlTop albottom alclient 3. Tempatkan pada Panel1 4 buah Button, 3 buah Label dan 3 buah Edit 4. Tempatkan pada Panel2 1buah BitBtn 5. Tempatkan pada Panel3 1 buah DBGrid ARSys Software Developed/AbdRohim 27
6. Isikan nilai-nilai pada properti sbb: Button1 &Cari Part No. dengan FindKey btnfindkey Button2 &Cari Part No. dengan FindNearest btnfindnearest Button3 &Apply Range btnapplyrange Button4 &Cancel Range btncancelrange Label1 Part No. Label2 Range Awal Label3 Range Akhir Edit1 EdCari Edit2 EdAwal Edit3 EdAkhir Table1 DataBase Table Active DBKURSUS PARTS.DB TRUE DataSource DataSet dsbarang BitBtn1 Kind bkclose DBGrid DataSource +Option (Double klik pada kata tersebut) DsBarang - DgRowSelect True - dgalwayshow true 7. Simpanlah program ini. Aturlah posisi direktori sesuai dengan petunjuk dari assistenya. Nama Unit adalah Latih2b.Pas dan Nama Project Latihan2b.Dpr 8. Double klik pada btnfindkey. Tuliskan program berikut ini: procedure TfmLatih2b.btnFindKeyClick(Sender: TObject); if edcari.<>'' then if tbbarang.findkey([edcari.]) then ShowMessage('Data ketemu') else ShowMessage('Data tidak ketemu'); end else ShowMessage('Isikan dahulu data yang akan dicari'); ARSys Software Developed/AbdRohim 28
9. Kembali pada form. Double Klik pada button btnfindnearest. Tuliskan program berikut ini: procedure TfmLatih2b.btnFindNearestClick(Sender: TObject); if edcari.<>'' then tbbarang.findnearest([edcari.]) else ShowMessage('Isikan dahulu data yang akan dicari'); 10. Kembali pada form. Double klik pada button btnapplyrange. Tuliskan program berikut ini: procedure TfmLatih2b.btnApplyRangeClick(Sender: TObject); if (edawal.<>'') and (edakhir.<>'')then tbbarang.setrange([edawal.],[edakhir.]); tbbarang.applyrange; end else ShowMessage('Isikan dahulu range awal dan range akhir'); 11. Kembali pada form. Double klik pada button btncancelrange. Tuliskan program berikut ini: procedure TfmLatih2b.btnCancelRangeClick(Sender: TObject); tbbarang.cancelrange; 12. Simpan kembali programnya 13. Run-lah. Cobakan semua tombol dengan setiap keadaan yang berbeda! ARSys Software Developed/AbdRohim 29
Latihan 2. c Buatlah program berikut ini: Lakukanlah langkah-langkah berikut ini: 1. Buka project baru. 2. Tempatkan 3 buah Panel pada form, aturlah properti untuk panel tersebut sbb: Panel1 Panel2 Panel3 AlTop albottom alclient 3. Tempatkan pada Panel1 1 buah Label dan 1 buah Table dan 1 buah DataSource 4. Tempatkan pada Panel2 1 buah BitBtn 5. Tempatkan pada Panel3 5 buah Label, 5 buah Edit dan 1 buah Button 6. Isikan nilai-nilai pada properti sbb: Label1 Table1 AutoSize +Font DataBase Table Active False Menampilkan Data MS Sans Serif Bold 14 DBKURSUS PARTS.DB TRUE DataSource DataSet dsbarang BitBtn1 Kind bkclose Label2 Part No. Label3 Description Label4 Stock On Hand ARSys Software Developed/AbdRohim 30
Label5 Cost Label6 Price Edit1 EdPartNo Edit2 EdPartNo Edit3 Edit4 Edit5 Edit6 Button1 EdDesc edonhand edcost edprice &Cari btncari 7. Simpanlah program ini. Aturlah posisi direktori sesuai dengan petunjuk dari assistenya. Nama Unit adalah Latih2c.Pas dan Nama Project Latihan2c.Dpr 8. Double klik pada Button btncari. Tuliskan program berikut ini: procedure TfmLatih2c.btnCariClick(Sender: TObject); ActiveControl:=edPartNo; eddesc. := ''; edonhand.:= ''; edcost. := ''; edprice. := ''; if edpartno.<>'' then if tbbarang.findkey([edpartno.])then eddesc. := tbbarangdescription.value; edonhand.:= FloatToStr(tbBarangOnHand.Value); edcost. := FloatToStr(tbBarangCost.Value); edprice. := FloatToStr(tbBarangListPrice.Value); end else ShowMessage('Data tidak ada'); end else ShowMessage('Isikan dahulu Part No. yang dicari'); 9. Simpan kembali programnya 10. Jalankan programnya ARSys Software Developed/AbdRohim 31
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 By berdasarkan nama yang berjenis data string. Bentuk tampilan yang dinginkan seperti berikut ini: ARSys Software Developed/AbdRohim 32