Delphi - Keresési módszerek adattáblákban

Keresés 2. rész

forráskód letöltése
A múlt héten bemutattuk a három leggyakrabban használt keresési módszert, melyekkel egy adatbázisban kereshetünk. Ebben a cikkben a további keresési lehetőségeket vizsgáljuk meg. A példaprogram kipróbálásához szükség van a DBDEMOS alias alatt elérhető Country.db adatbázisra.

Elsőként egy olyan eljárást mutatunk be, mellyel a megadott kulcs szerint kereshetünk úgy, hogy nem szükséges az értékeket teljes egészében megadni. A FindNearest eljárásnak paraméterként meg kell adni a keresett rekord kulcsmezőinek értékét.
Table1.FindNearest([sorsz, 'kulcs']);
Ha nem talál olyan rekordot, amely megfelel a megadott értékeknek, akkor a következő olyan rekordra áll, amely a megadott kulcs után következik. Ha például egy adatbázisban a következő kulccsal rendelkező rekordok vannak: 1, 4, 5, 7, 8, 10, és a keresett kulcs 6, akkor a 7-es rekordra fog állni.

A GotoKey függvény rápozícionálja a kurzort a megfelelő rekordra, melynek kulcsát az EditKey vagy SetKey után adtuk meg. Az alábbi példában jól látható ennek módja:
procedure TForm1.Button2Click(Sender: TObject);
begin
  with Table1 do begin
    EditKey;
    FieldByName('Name').AsString:=Edit2.Text;
    if not GotoKey then ShowMessage('Nem található a feltételnek megfelelő rekord!');
  end;
end;
Ha található a kulcsnak megfelelő rekord, akkor a függvény visszatérési értéke igaz, és rápozícionál a rekordra, ellenkező esetben a visszatérési érték hamis, és a kurzor nem mozdul. A kulcsot teljes egészében meg kell adni, részletre nem lehet ezzel a módszerrel keresni.

A GotoNearest annyiban különbözik a GotoKey-től, hogy ezzel már részletre is kereshetünk. A keresési kulcsot ugyanúgy kell megadni, mint az előző esetben. A GotoNearest egy eljárás, tehát nincs visszatérési értéke. Ha a keresett kulcsnak megfelelő rekord nem található, akkor a FindNearest eljáráshoz hasonlóan a kulcs után következő rekordra áll.

Ha nem rekordot szeretnénk keresni az adatbázisban, hanem egy mezőt, akkor erre is van lehetőség. A FindField függvény segítségével a paraméterként megadott nevű mezőt kereshetjük meg. A függvény visszatérési értéke egy TField típusú objektum, vagy ha a mező nem található, akkor nil.
var
  MyField: TField;
…
  MyField := Tabel1.FindField('Nev');
  if Assigned(MyField) then begin
…
  end;




Keresés cikksorozat

Keresési módszerek adattáblákban - Keresés 1. rész

Keresési módszerek adattáblákban - Keresés 2. rész