Pencarian Data
6.12. Pencarian Data
ClientDataSet menyediakan berbagai method untuk mencari data pada ClientDataSet. Pencarian dapat dilakukan dengan indeks atau tanpa indeks.
6.12.1. Locate
Method Locate digunakan untuk pencarian data tanpa menggunakan indeks. Method ini digunakan untuk mencari record berdasarkan satu field atau lebih. Contohnya sebagai berikut ini.
function Locate(const KeyFields: string; const KeyValues : Variant; Options : TLocateOptions) : Boolean; override;
Parameter pertama, KeyFields, adalah nama field‐ field yang akan dicari nilainya, dipisahkan oleh titik‐ koma bila lebih dari satu field. Contoh : ‘Name;Birthday’.
Parameter kedua, KeyValues, berisi nilai‐ nilai field yang akan dicari. Jumlah nilai yang akan dicari harus sama dengan jumlah field pada parameter KeyFields.
Parameter ketiga, Options, bertipe TLocateOptions, menentukan bagaimana pencarian dilakukan.
TLocateOptions
Keterangan
IoPartialKey Method Locate akan mencari record pertama yang nilai field pada parameter KeyField‐ nya diawali dengan nilai yang terdapat pada KeyValues. Hal ini hanya berlaku pada field bertipe string.
IoCasseInsensitive Method Locate akan mengabaikan huruf kapitak atau huruf kecil jika mencari field yang bertipe string.
Method Locate mengembalikan nilai True bila ada record yang sesuai dengan kriteria dan mengembailkan nilai False jika tak ada record yang sesuai dengan kriteria. Jika Method Locate menemukan record yang dimaksud, pointer record aktif dari dataset akan melompat ke record tersebut sehingga record yang diketemukan itu menjadi record aktif. Contoh berikut ini mencari record yang nilai field ‘Name’‐ nya adalah ‘Clark Kent’.
ClientDataSet1.Locate(‘Name’, ‘Clark Kent’, [ ]);
6.12.2. Lookup
Method Lookup digunakan untuk pencarian data tanpa menggunakan indeks. Method Lookup mempunyai konsep yang serupa dengan method Locate. Perbedaannya adalah Method Lookup tidak mengubah pointer record aktif, hanya mengembalikan nilai dari satu atau lebih field dari record yang ditemukan. Method Lookup didefinisikan sebagai berikut :
function Lookup(const KeyFields : string; const KeyValue : Variant;
const ResultFields : string) : Variant; override;
Page 102
KeyFields dan KeyValue berisi nama field dan nilai yang akan dicari. ResultFields berisi field‐ field yang datanya diinginkan dari record yang ditemukan. Contoh berikut ini akan mengembalikan nilai tanggal lahir dari karyawan yang bernama Ari Siswoyo. :
var
V : Variant;
begin
V := ClientDataSet1.Lookup(‘Nama’, ‘Ari Siswoyo’, ‘TglLahir’);
end;
6.12.3. FindKey
Method FindKey digunakan untuk pencarian data dengan menggunakan indeks. Method FindKey mencari record yang nilai field indeks yang aktif sesuai dengan parameter input yang diberikan. Method ini mempunyai satu parameter, yaitu nilai field yang akan dicari. Parameter ini berupa array of const. Contoh :
if ClientDataSet.FindKey([ 25]) then ShowMessage(‘Found ID 25’); … if ClientDataSet.FindKey([ ‘Doe’, ‘John’]) then
ShowMessage(‘Found John Doe’);
Anda harus memastikan bahwa nilai yang Anda cari sesuai dengan indeks yang aktif. Kode program di bawah ini memastikan indeks yang digunakan oleh dataset.
ClientDataSet.IndexName := ‘byID’; if ClientDataSet.FindKey([ 25]) then
ShowMessage(‘Found ID 25’); … ClientDataSet.IndexName := ‘byName’; if ClientDataSet.FindKey([ ‘Doe’, ‘John’]) then
ShowMessage(‘Found John Doe’);
6.12.4. FindNearest
Method FindNearest digunakan untuk pencarian data dengan menggunakan indeks. Method ini sama dengan method FindKey, hanya saja FindNearest mencari record pertama yang lebih besar atau sama dengan nilai yang diberikan. Hal ini tergantung kepada nilai property KeyExclusive.
Jika KeyExclusive bernilai False (default), FindNearest akan mencari record pertama yang lebih besar atau sama dengan nilai yang diberikan. Jika KeyExclusive bernilai True, FindNearest akan mencari record yang lebih besar dari nilai yang diberikan.
Jika method FindNearest tidak menemukan record yang sesuai, pointer record aktif akan melompat ke akhir dataset.
Page 103
6.12.5. GotoKey
Method GotoKey digunakan untuk pencarian data dengan menggunakan indeks. Pola kerjanya sama dengan method FindKey, hanya saja kita dapat mengeset nilai dari field‐ field yang akan dicari sebelum memanggil method GotoKey. Contoh :
ClientDataSet.IndexName := ‘byID’; ClientDataSet.SetKey; ClientDataSet.FieldByName (‘ID’).AsInteger := 25; ClientDataSet.GotoKey;
6.12.6. GotoNearest
Method GotoNearest digunakan untuk pencarian data dengan menggunakan indeks. Method ini mempunyai pola yang serupa dengan method GotoKey. Perbedaannya adalah GotoNearest mencari record pertama yang lebih besar atau sama dengan nilai yang diberikan. Hal ini tergantung kepada nilai property KeyExclusive.
Jika KeyExclusive bernilai False (default), GotoNearest akan mencari record pertama yang lebih besar atau sama dengan nilai field yang diset setelah pemanggilan method SetKey atau EditKey. Jika KeyExclusive bernilai True, GotoNearest akan mencari record yang lebih besar dari nilai field yang diset setelah pemanggilan method SetKey atau EditKey.
Jika method GotoNearest tidak menemukan record yang dicari, pointer record aktif akan melompat ke akhir dataset.