|
|
Keresési módszerek adattáblákban
Keresés 1. rész
|
|
Példaprogram letöltése
6355 bájt
|
Amikor egy olyan alkalmazást készítünk, ami egy adatbázist használ, akkor biztosan előfordul olyan eset, hogy keresnünk is kell abban az adatbázisban. Ebben a cikkben azt vizsgáljuk, hogy milyen lehetőségeink vannak erre.
A példaprogram futtatásához szükség van a Delphi által telepített példa adatbázisra, amely a DBDEMOS alias alatt érhető el!
Egy adatbázisban többféleképpen is kereshetünk, most a leggyakrabban használt módszereket nézzük meg.
A Locate függvénnyel tetszőleges mezőben vagy mezőkben kereshetünk. A függvény deklarációja így néz ki:
function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions):
Boolean;
A KeyFields paraméterben kell megadni azoknak a mezőknek a nevét, amiben keresni szeretnénk. Ezeket pontosvesszővel kell elválasztani egymástól. A KeyValues paraméterben meg kell adni a keresett adatot. Mivel ez egy Variant típusú paraméter, ezért bármilyen típusú adatot megadhatunk, csak arra kell figyelni, hogy az a mező típusával egyező legyen. Ha több mezőben is keresünk, akkor a VarArrayOf függvénnyel kell a keresett adatokat megadni:
Table1.Locate('NEV;KOR', VarArryOf(['Kovács', 30], [loCaseInsensitive]);
Az Options paraméterben megadhatjuk, hogy a sztring típusú adatoknál a kis- és nagybetűk egyformák legyenek-e (loCaseInsensitive), illetve, hogy a keresett adatnak egy részletére keresünk-e rá (loPartialKey). Az alábbi példa megkeresi az összes "Kov"-val kezdődő nevet, függetlenül attól, hogy kis- vagy nagybetűkkel van-e megadva (pl. "KOVÁCS").
Table1.Locate('NEV', 'Kov', [loCaseInsensitive, loPartialKey]);
A visszatérési érték true, ha sikerült a megadott feltételeknek megfelelő rekordot találni. Ebben az esetben rá is pozícionál a rekordra. A kereséshez automatikusan felhasználja az indexeket.
Egy másik keresési módszer az, amikor egy megadott kulcs szerint keresünk. Ehhez a FindKey függvényt használhatjuk. Ez mindig az IndexFieldNames illetve IndexName property-kben megadott kulcs szerint keres. Ha nincs megadva itt semmi, akkor az elsődleges kulcs szerint keres.
function FindKey(const KeyValues: array of const): Boolean;
A KeyValues paraméterben kell megadni a keresett adatokat abban a sorrendben, ahogyan a mezők követik egymást a kulcsban. A függvény visszatérési értéke true, ha talált a feltételnek megfelelő rekordot, ebben az esetben rá is pozícionál.
Az alábbi példa egy számla tételt keres. Az SZLASZAM mező a számlaszámot, a TETEL pedig a tételszámot tartalmazza:
Table1.IndexFieldNames:='SZLASZAM;TETEL';
Table1.FindKey(['2001/001234', 2]);
A harmadik keresési módszer, amit most bemutatunk eltér az előbbiektől. A Lookup függvény nem true vagy false értéket ad vissza, hanem a megtalált rekord megadott mezőinek tartalmát.
function Lookup(const KeyFields: String; const KeyValues: Variant; const
ResultFields: String): Variant;
A KeyFields és KeyValues paraméterek ugyanúgy használandók, ahogy a Locate függvénynél. A ResultFields paraméterben meg kell adni azoknak a mezőknek a neveit, amelyeknek tartalmára kíváncsiak vagyunk, természetesen pontosvesszővel elválasztva. A függvény visszatérési értéke a ResultFields-ben megadott mező, vagy mezők tartalma lesz, ha megtalálta a rekordot.
var
kor: integer;
…
kor:=Table1.Lookup('NEV', 'Kovács', 'KOR');
if not VarIsNull(kor) then ShowMessage('Kovács életkora: '+IntToStr(kor));
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 459. oldal
Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!
|