Mozes da izvrsis pretragu na vise nacina. Zavisi sta koristis od komponenti i kakav rezultat zelis.
Pretpostavimo da imas tabelu MojaTabela sa poljima (Prg_ID, Prg_Name, Prg_Serial, Prg_Comment) i da trazis record koji sadrzi 'dreamweaver' ukucan u Edit1 kontrolu (TEdit).
1. SQL nacin:
Treba ti komponenta koja moze da prihvati SQL upit, dakle neka Query komponenta (npr TQuery, posto si verovatno koristio BDE), koju postavis na formu ili kreiras iz koda, pod imenom SearchQuery. Popunis properties tako da se komponenta poveze sa tvojom bazom (zavisi kako si vec radio, preko aliasa ili preko imena fajlova direktno).
[code:1]
...
SearchQuery.DisableControls;
SearchQuery.Close;
SearchQuery.SQL.Add(Format('SELECT * FROM mojatabela WHERE Prg_Name = %s', [Edit1.Text]));
SearchQuery.Open;
SearchQuery.EnableControls;
...
[/code:1]
Na ovaj nacin dohvatas sve recorde kojima je polje Prg_Name = 'dreamweaver'. Medjutim, ovo radi samo ukoliko zelis record cije polje sadrzi iskljucivo i samo 'dreamweaver'. Ukoliko hoces i druge recorde koji sadrze 'dreamweaver 2.0','dreamweaver 4.0', itd, onda mora SQL skripta malo da se promeni: WHERE Prg_Name LIKE "%dreamweaver%" :
SearchQuery.SQL.Add('SELECT * FROM mojatabela WHERE Prg_Name LIKE "%'+Edit1.Text+'%"');
2. Filtriranjem:
Ukoliko imas objekat recimo TTable klase, postavis property Filtered na True i uneses zeljeni filter u Filter property, recimo ovako:
MojaTabela.Filter := 'Prg_Naziv = ' + QuotedStr('dreamweaver*');
3. Pretraga postojeceg dataseta:
funkcijom MojaTabela.Locate('Prg_Name', Edit1.Text, [loCaseInsensitive, loPartialKey]) koja vraca false ako ne postoji record koji pasuje tvojem kriterijumu pretrazivanja. U suprotnom postavlja pointer na prvi record koji odgovara kljucu pretrage.
Svaki od ovih nacina ima prednosti i mane; prva dva su u sustini jedno te isto, samo sto jedan operise preko TQuery, a drugi preko TTable. Karakteristicno za njih je to sto kao rezultat pretrage vracaju dataset, dakle logicku tabelu koja je prazna u slucaju da nije nista nadjeno. Ponekad nije lose kreirati takvu komponentu samo za pretragu, tako da istovremeno postoje dve komponente - jedna koja sadrzi kompletnu tabelu, a druga samo rezultat pretrage iliti filtrirane recorde.
Treci nacin ne zahteva dodatnu komponentu i ne vraca dataset kao rezultat, nego se samo pozicionira u postojecem datasetu na prvi record koji odgovara kriterijumu pretrazivanja. U tom slucaju pogledaj u helpu i komande FindPrior, FindNext (koje mogu biti overloadovane od strane razlicitih komponenti), a verovatno ces u tom slucaju morati raditi i sa Bookmarkovima.
Svi ovi koncepti pretrage bi trebali da budu isti, bez obzira koristio paradox, access ili nesto trece iz Delphija. Fakticki, menjas samo drajver.