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.