HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

A ClientDataSet komponens


ClientDataSet 5. rész

Példaprogram letöltése

160469 bájt

Az ötödik részben folytatjuk a TClientDataSet osztály metódusainak ismertetését. A mellékelt példaprogramban megnézzük, hogy hogyan tudjuk az adatkészletet többféle formátumban elmenteni (pl. XML), valamint beolvasni. Megnézünk továbbá egy gyakran használt keresési módszert is, amivel akár rész adatokra is kereshetünk. A keresést egy tetszőlegesen kiválasztható (de sztring típusú) mezőben végezhetjük el. Mivel tetszőleges adatcsomagot betölthetünk, így a mezők nevének és típusának ellenőrzését is meg kell tennünk.

GetCurrentRecord
Osztály: TCustomClientDataSet
function GetCurrentRecord(
Buffer: PChar
): Boolean;
Beolvassa az aktuális rekordot a Buffer paraméter (PChar) által megadott memória bufferbe. A buffer méretének legalább akkorának kell lennie, mint a RecordSize property értékének. A legtöbb alkalmazásnál nem kell használni ezt a függvényt, mivel a rekord beolvasása automatikusan megtörténik.
Paraméterek
Buffer: PChar
Ebben a paraméterben kell megadnunk a bufferre mutató pointert.
GetFieldData
Osztály: TCustomClientDataSet
function GetFieldData(
FieldNo: Integer;
Buffer: Pointer
): Boolean;
Ez a függvény lekérdezi a paraméterekben meghatározott mezőben tárolt adatot egy bufferbe. A TField objektumok is ezt a függvényt használják a saját GetData függvényükben. A függvénynek három változata is van:
function GetFieldData(FieldNo: Integer; Buffer: Pointer): Boolean; overload; override;
function GetFieldData(Field: TField; Buffer: Pointer): Boolean; overload; override;
function GetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean): Boolean; overload; virtual;
Paraméterek
FieldNo: Integer
Ebben a paraméterben a mező sorszámát kell megadnunk. Az adatkészlet első mezőjének sorszáma, 0, a másodiké 1, stb.
Buffer: Pointer
Arra a bufferre mutató pointer, amelybe a mezőben tárolt adatot le akarjuk kérdezni. A buffer méretének akkorának kell lennie, amekkora a mezőben tárolt adat által lefoglalt hely az adatbázisban.
Field: TField
Ebben a paraméterben megadhatjuk annak a mezőnek a TField objektumát, amely mezőben tárolt adatot le szeretnénk kérdezni.
NativeFormat: boolean
Ha ennek a paraméternek az értéke igaz, akkor a Delphi TField adattípusához tartozó eredeti formátumban kérdezi le az adatot. Ha a paraméter értéke hamis, akkor a lekérdezett adatot konvertálni kell a Translate metódussal a megfelelő adattípusra.
Visszatérési érték
A függvény visszatérési értéke igaz, ha a lekérdezés sikeres volt, és hamis, ha nem.
GetGroupState
Osztály: TCustomClientDataSet
function GetGroupState(
Level: Integer
): TGroupPosInds;
Egy halmaz típusú (TGroupPosInds) property, amelyben megkapjuk, hogy az aktuális rekord a Level paraméterben megadott szintű csoportban hogyan helyezkedik el.
Paraméterek
Level: Integer
Ez a paraméter azonosítja a csoportot, a csoport szintjével. Ha ez az érték 1, akkor ez megfelel az index első mezőjének, ha kettő, akkor az első kettő mezőnek, és így tovább. Ha a paraméter értéke nagyobb, mint a GroupingLevel property értéke, akkor hibaüzenetet kapunk.
Visszatérési érték
A függvény visszatérési értéke TGroupPosInds típusú, melyben az alábbi értékeket kaphatjuk meg:
  • üres halmaz: az AggregatesActive property értéke hamis, vagy az index nem támogatja a csoportosítást;
  • gbFirst: a rekord az első a csoportban;
  • gbMiddle: a rekord sem az első, sem pedig az utolsó a csoportban;
  • gbLast: a rekord az utolsó a csoportban;
  • gbFirst és gbLast együtt: csak ez az egy rekord tartozik a csoportba;
GetIndexInfo
Osztály: TCustomClientDataSet
procedure GetIndexInfo(
IndexName: String
);
Beolvassa az információkat az aktuális indexről. Feltölti az adatkészlet belső index mezőit az aktuális index adataival.
Paraméterek
IndexName: String
Ha a csoportosítási szintet is be kell olvasni, akkor az IndexName paraméterben meg kell adni az index nevét, mivel e nélkül ez az információ nem lesz beolvasva. Az IndexName paraméterben nem adható meg más index neve, csak az aktuális indexé.
GetIndexNames
Osztály: TCustomClientDataSet
procedure GetIndexNames(
List: TStrings
);
A paraméterként megadott TStrings típusú objektumot feltölti az indexek neveivel. A DEFAULT_ORDER (a rekordok alapértelmezett sorrendje), és a CHANGEINDEX (a módosított rekordokat tartalmazza) indexek minden adatkészlethez automatikusan létrejönnek.
ClientDataSet1.GetIndexNames(ComboBox1.Items);
Paraméterek
List: TStrings
Ebben a paraméterben kell megadni egy TStrings típusú objektumot, amelybe az indexek nevei lesznek felvéve.
GetNextPacket;
Osztály: TCustomClientDataSet
function GetNextPacket: Integer;
Lekérdezi a rekordok következő csoportját. Az egy csoportban lévő rekordok számát a PacketRecors property adja meg. Az újonnan beolvasott csomagban található rekordok hozzáadódnak a Data property-be már előzőleg beolvasott rekordokhoz.
A függvény visszatérési értéke a beolvasott rekordok száma. Ha ez az érték 0, akkor már az összes rekord be lett olvasva.
GetOptionalParam
Osztály: TCustomClientDataSet
function GetOptionalParam(
const ParamName: string
): OleVariant;
A provider az adatcsomagokhoz extra kiegészítő adatokat is csatolhat. Ezzel a függvénnyel ezeket kérdezhetjük le. Ne tévesszük össze a Params property-vel!
Paraméterek
const ParamName: string
Ebben a paraméterben adhatjuk meg annak a paraméternek a nevét, amelynek az értékét le akarjuk kérdezni.
Visszatérési érték
A függvény visszatérési értéke a lekérdezett paraméter értéke.
GotoCurrent
Osztály: TCustomClientDataSet
procedure GotoCurrent(
DataSet: TCustomClientDataSet
);
Két azonos adatkészlet esetén használható, ha azt szeretnénk, hogy mindkét adatkészletben ugyanaz legyen az aktuális rekord. Ezzel szinkronizálhatjuk a két adatkészletet.
Paraméterek
DataSet: TCustomClientDataSet
Az ebben a paraméterben megadott adatkészlet aktuális rekordjának megfelelő rekordra helyezi a kurzort.
GotoKey;
Osztály: TCustomClientDataSet
function GotoKey: Boolean;
Az EditKey vagy SetKey után megadott kulcsú rekordra ugrik.
Visszatérési érték
Ha nem találta meg a rekordot, akkor a függvény visszatérési értéke hamis, és a kurzor nem változik. Ellenkező esetben a visszatérési érték igaz, és a megtalált rekordra helyezi a kurzort.
GotoNearest;
Osztály: TCustomClientDataSet
procedure GotoNearest;
Annyiban különbözik a GotoKey függvénytől, hogy itt a megadott kulcsnak nem kell pontosan megegyezni a rekordban tárolt adatokkal. Arra a rekordra pozícionál, amelynek adataira a legjobban illeszkedik a megadott kulcs, vagy ha nincs ilyen rekord, akkor az első rekordra ugrik, amelyik a kulcsnál nagyobb. Ha ilyen sincs, akkor az utolsó rekordra ugrik.
LoadFromFile
Osztály: TCustomClientDataSet
procedure LoadFromFile(
const FileName: string = ''
);
A Data property-t egy fájlból tölti fel. A fájl-nak a SaveToFile eljárással elmentett fájlnak kell lennie.
Paraméterek
const FileName: string = ''
Ebben a paraméterben megadhatjuk a fájl nevét. Ezt nem kötelező megtenni, mivel ha nem adjuk meg, vagy csak egy üres sztringet adunk meg, akkor a FileName property értékét veszi figyelembe.
LoadFromStream
Osztály: TCustomClientDataSet
procedure LoadFromStream(
Stream: TStream
);
A megadott TStream típusú objektumból tölti fel a Data property-t, amiben az adatkészletet tárolja. Az adatfolyam formátumának meg kell egyeznie a kliens adatkészlet belső formátumával. Például megadható egy olyan TStream objektum, amiben előzőleg a SaveToStream eljárással feltöltöttük az adatokat, akár egy másik adatkészletből.
Paraméterek
Stream: TStream
Ebből a TStream objektumból tölti fel a Data property-t.
Locate
Osztály: TCustomClientDataSet
function Locate(
const KeyFields: string;
const KeyValues: Variant;
Options: TLocateOptions
): Boolean;
A kulcstól független keresést tesz lehetővé.
Paraméterek
const KeyFields: string
A KeyFields paraméterben meg kell adni azokat a mezőket, amelyekben keresni akarunk. A mezők neveit pontosvesszővel kell elválasztani egymástól.
const KeyValues: Variant
A KeyValues paraméterben a keresett adatot, vagy adatokat kell megadni. Ha több mezőben is keresünk, akkor használjuk a VarArrayOf függvényt az adatok megadására, ahogy az az alábbi példában is látszik:
if ClientDataSet1.Locate(’Tipus;Nev’, VarArrayof([10, Edit1.Text]), [loCaseInsensitive, loPartialKey]) then ...
Options: TLocateOptions
Az Options paraméterben megadhatók a kereséssel kapcsolatos opciók, amiket csak sztring típusú mezők esetén vesz figyelembe. Ez egy TLocateOptions típusú halmaz paraméter, melyben a következő két értéket adhatjuk meg:
  • loCaseInsensitive: a keresésnél nem tesz különbséget a kis- és nagybetűk között.
  • loPartialKey: a keresett értékeknek nem kell pontosan megegyezniük a rekordokban tárolt értékekkel, elég, ha csak illeszkednek rájuk (pl. az „al” = „alma”).
Visszatérési érték
Ha a függvény megtalálta a keresett rekordot, akkor a visszatérési értéke igaz, és rá is pozícionál a rekordra. Ellenkező esetben a visszatérési érték hamis, és a kurzor nem mozdul.

Cikksorozat

#IDKategóriaCikk címeSorozat
1488DelphiMS SQL tárolt eljárások1. rész
1499DelphiMS SQL tárolt eljárások2. rész
1507DelphiMS SQL tárolt eljárások3. rész
1519DelphiMS SQL tárolt eljárások4. rész
1526DelphiMS SQL tárolt eljárások5. rész
1537DelphiMS SQL tárolt eljárások6. rész
1546DelphiMS SQL tárolt eljárások7. rész
1553DelphiMS SQL tárolt eljárások8. rész
1564DelphiMS SQL tárolt eljárások9. rész
1573DelphiMS SQL tárolt eljárások10. rész
1582DelphiMS SQL tárolt eljárások11. rész
1591DelphiMS SQL tárolt eljárások12. rész
1600DelphiMS SQL tárolt eljárások13. rész
1609DelphiMS SQL tárolt eljárások14. rész
1617DelphiMS SQL tárolt eljárások15. rész
1626DelphiMS SQL tárolt eljárások16. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 525. 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!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |