Academia.eduAcademia.edu

Pencarian data

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