|
TSQL602CondList | Přehled CDK komponent | TSQL602Statement |
Zjednodušená deklarace třídy:
type TSQL602DataSetFind = class(TComponent); published property Active : Boolean; property DataSource : TDataSource; property CondText : string; property Options : TLocateOptions; property OnDataSetChange : TNotifyEvent; public property DataSet : TSQL602DataSet; // pouze pro čtení property RecordCount : trecnum; // pouze pro čtení property KeyFields[Index : Integer] : string; property KeyValues[Index : Integer] : Variant; property KeyCount : Integer; constructor Create(AOwner : TComponent); override; destructor Destroy; override; function Next : Boolean; function Prev : Boolean; function First : Boolean; function Last : Boolean; protected procedure DoOnDataSetChange; virtual; end;
Komponenta umožňuje vyhledávat záznamy v napojeném datasetu. Vyhledávací podmínku lze specifikovat dvěma způsoby: jako množinu klíčových sloupců a jejich hodnot, nebo jako řetězec odpovídající klauzuli WHERE v SQL příkazu SELECT (obecnější).
Lze tímto způsobem procházet i datasety naplněné obsahem needitovatelného kurzoru, ale za cenu ztráty efektivity.
Datasource, který zprostředkovává odkaz na prohledávaný dataset.
Vyhledávací podmínka jako klauzule WHERE v SQL příkazu SELECT.
Seznam jmen klíčových sloupců.
Seznam hodnot klíčových sloupců.
Počet klíčových sloupců, umožňuje vynulovat seznam klíčových sloupců a jejich hodnot před novým hledáním.
Příznaky vyhledávání podle klíčových hodnot.
loCaseInsensitive | Řetězce se porovnávají bez ohledu na velká a malá písmena (má smysl pouze tehdy, když prohledávaný sloupec nemá již přímo v definici tabulky klauzuli IGNORE_CASE) |
loPartialKey | V případě sloupců typu CHAR(n) a NCHAR(n) se porovnává, zda hodnota sloupce začíná řetězcem zadaným v KeyValues[i] |
loSubKey | V případě sloupců typu CHAR(n) a NCHAR(n) se porovnává, zda hodnota sloupce obsahuje řetězec zadaný v KeyValues[i] (není to fulltextové vyhledávání!) |
Indikuje, zda má komponenta aktivované potřebné zdroje na SQL serveru. Nastavení hodnoty na true není nutné, aktivace se provede automaticky při prvním zavolání metody Next, Prev, First nebo Last. Nastavením hodnoty na false se zdroje na SQL serveru uvolní.
Prohledávaný dataset.
Vrací počet nalezených záznamů.
Nastaví dataset DataSet na další záznam odpovídající zadané vyhledávací podmínce, pokud další takový záznam neexistuje vrátí false.
Nastaví dataset DataSet na předchozí záznam odpovídající zadané vyhledávací podmínce, pokud takový záznam neexistuje vrátí false.
Nastaví dataset DataSet na první záznam odpovídající zadané vyhledávací podmínce, pokud takový záznam neexistuje vrátí false.
Nastaví dataset DataSet na poslední záznam odpovídající zadané vyhledávací podmínce, pokud takový záznam neexistuje vrátí false.
Dojde-li ke změně prohledávaného datasetu, t.j. změní-li se Filter, Order, CommandText apod., dojde k vynulování stavu komponenty TSQL602DataSetFind a případné další prohledávání bude probíhat od začátku datasetu. Tato metoda umožňuje třídě potomka na tuto událost reagovat.
Dojde-li ke změně prohledávaného datasetu, t.j. změní-li se Filter, Order, CommandText apod., dojde k vynulování stavu komponenty TSQL602DataSetFind a případné další prohledávání bude probíhat od začátku datasetu. Tato událost umožňuje aplikaci na tuto změnu reagovat.
Vyhledávání záznamů prostřednictvím klíčových sloupců a hodnot (na rovnost)
dsf := TSQL602DataSetFind.Create(Self); dsf.DataSource := DataSource1; dsf.KeyFields[0] := 'Jmeno'; dsf.KeyValues[0] := 'Josef'; dsf.KeyFields[1] := 'Prijmeni'; dsf.KeyValues[1] := 'Novák'; dsf.Options := [loCaseInsensitive]; while dsf.Next do begin . . . end; dsf.Free;
Vyhledávání záznamů prostřednictvím klauzule WHERE (na rovnost i nerovnost)
dsf := TSQL602DataSetFind.Create(Self); dsf.DataSource := DataSource1; dsf.CondText := 'Jmeno=''Josef'' AND Prijmeni<>''Novák'''; while dsf.Next do begin . . . end; dsf.Free;
TSQL602CondList | Přehled CDK komponent | TSQL602Statement |