HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

A ClientDataSet komponens


ClientDataSet 2. rész

Példaprogram letöltése

5230 bájt

Folytatjuk a TClientDataSet osztály referenciaszerű ismertetését. A második részben továbbra is az osztály property-jeit vesszük sorra. A mellékelt példában egy olyan lehetőséget mutatunk be, amellyel a rekordokat az indexben szereplő mezők szerint csoportosíthatjuk, vagyis meghatározhatjuk az adott rekord csoporton belüli pozícióját. A csoportosítás több szintű is lehet.

GroupingLevel
Osztály: TCustomClientDataSet
property GroupingLevel: Integer;
A csoportosítási szint maximális értéke. A csoportokat az indexben használt mezők határozzák meg. Az 1-es szintű csoportban azok a rekordok tartoznak ugyanazon csoportba, melyeknél az index első mezőjében azonos érték található. A 2-es csoportba az index első két mezőjében azonos értéket tartalmazó rekordok tartoznak, és így tovább. A 0-s csoport az összes rekordot magában foglalja.
Tegyük fel, hogy egy tábla első mezője egy évszám, a második egy hónap, a harmadik pedig a nap. E szerint a három mező szerint vannak indexelve a rekordok. Ebben az esetben, ha a GroupingLevel=1, akkor a csoportosítás évszám szerint történik, tehát az azonos évszámot tartalmazó rekordok tartoznak egy csoportba. Ha a GroupingLevel=2, akkor már a hónap is számít, tehát egy csoportba az azonos évszámot és hónapot tartalmazó rekordok tartoznak.
Hogy mire jó ez? Például amikor egy táblázatban megjelenítjük a rekordokat, akkor minden rekordról eldönthetjük, hogy az adott szinten lévő csoportban hol foglal helyet (a csoport elején, közepén, vagy végén), így a megjelenítéskor például használhatunk más-más színt az egyes csoportok jelölésére. Az aktuális rekord elhelyezkedését a csoportban a GetGroupState függvénnyel kérdezhetjük le.
HasAppServer
Osztály: TCustomClientDataSet
property HasAppServer: Boolean;
A property értéke megadja, hogy a ClientDataSet provider-hez van-e kapcsolva. Ha a property értéke igaz, akkor az adatokat egy IAppServer interfészen keresztül éri el. Ennek megállapítására használjuk ezt a property-t ahelyett, hogy az AppServer property-n keresztül ellenőriznénk ugyanezt.
IndexDefs
Osztály: TCustomClientDataSet
property IndexDefs: TIndexDefs;
Az adatkészlet indexeinek listáját tartalmazza ez a property, illetve ha új adatkészletet hozunk létre, akkor az ehhez tartozó indexeket tudjuk itt megadni. Egy meglévő táblának nem tudunk itt új indexeket megadni, ehhez használjuk az AddIndex eljárást. A property-n keresztül a következő műveleteket tudjuk elvégezni:
  • hozzáférhetünk az indexek definícióihoz, adataihoz;
  • megállapíthatjuk, hogy összesen hány index van definiálva az adatkészlethez;
  • új index létrehozása vagy meglévő indexek törlése (csak új tábla esetén);
  • az összes index definíció másolása egy másik TIndexDefs típusú property-be.
Minden indexhez egy TIndexDef típusú objektum tartozik. Ebben a következő property-ket tudjuk beállítani:
  • CaseInsFields: ebben a property-ben azokat a mezőket kell megadni, amelyekben a rendezésnél a kis- és nagybetűk között nem kell különbséget tenni. Az itt megadott mezőknek a Fields property-ben is szerepelniük kell. A mezők neveit pontosvesszővel kell elválasztani egymástól.
  • DescFields: azokat a mezőket kell ebben a property-ben felsorolni, amelyek rendezése csökkenő sorrendben történik. Erre a property-re is vonatkozik, hogy a mezők neveit pontosvesszővel kell elválasztani, és a mezőket a Fields property-ben is meg kell adni.
  • Expression: dBase adatbázisokál az indexet nem csak mezőkkel, hanem kifejezésekkel is megadhatjuk, illetve használhatjuk még akkor is, ha az Options-ban az ixExpression be van állítva. A kifejezést ebben a property-ben kell megadni. Ebben az esetben a Fields property-nek üresnek kell lennie.
  • Fields: az indexben szereplő mezőnevek, pontosvesszővel elválasztva.
  • GroupingLevel: ebben a property-ben adhatjuk meg, hogy a csoportosítást milyen mélységig támogatja az index (lásd GroupingLevel property).
  • Options: az index jellemzőit állíthatjuk be ebben a property-ben.
IndexFieldCount
Osztály: TCustomClientDataSet
property IndexFieldCount: Integer;
A property megadja, hogy az aktuális indexben hány mező szerepel.
IndexFieldNames
Osztály: TCustomClientDataSet
property IndexFieldNames: string;
Az aktuálisan használt indexben szereplő mezők neveit tartalmazza, pontosvesszővel elválasztva.
IndexFields
Osztály: TCustomClientDataSet
property IndexFields[Index: Integer]: TField;
Egy tömb típusú property melynek egyes elemei az indexben szereplő mezők objektumai (TField). Az első mező indexe 0, a másodiké 1, stb. A property értékét ne változtassuk meg közvetlenül, helyette az IndexFieldNames property-t módosítsuk.
IndexName
Osztály: TCustomClientDataSet
property IndexName: string;
Az aktuálisan használt index neve. Ha nincs index megadva, akkor az IndexFieldNames property-ben meghatározott sorrendben, vagy az alapértelmezett sorrendben jelennek meg az adatok.
KeyExclusive
Osztály: TCustomClientDataSet
property KeyExclusive: Boolean;
A property-vel meghatározhatjuk, hogy a tartomány határaként megadott rekordok szerepeljenek-e a tartományban, vagy nem. Az alapértelmezett értéke hamis, ami azt jelenti, hogy a megadott rekordok szerepelnek a tartományban. Ha a property értéke hamis, akkor a tartomány elejének megadott rekord utáni, és a tartomány végének megadott rekord előtti rekordok jelennek csak meg.
KeyFieldCount
Osztály: TCustomClientDataSet
property KeyFieldCount: Integer;
A property értéke meghatározza, hogy a keresésnél (pl. FindKey) hány darab kulcsmező szerepeljen. Alapesetben az értéke a kulcsmezők számával egyezik meg, de lehet ennél kevesebb is. Ha például három kulcsmező van, és a property értéke 2, akkor a keresés csak az első két mező szerint történik, míg egy esetében csak az elsőt veszi figyelembe.
KeySize
Osztály: TCustomClientDataSet
property KeySize: Word;
A property az elsődleges kulcs méretét adja meg.
LogChanges
Osztály: TCustomClientDataSet
property LogChanges: Boolean;
Általában amikor módosítunk az adatbázisban tárolt adatokon, a változás nem tárolódik el azonnal, hanem a változtatások a Delta property-ben vannak tárolva. Ebben az esetben ezeket a változtatásokat vissza lehet vonni, vagy éppen véglegesíteni. Ez utóbbi esetben a módosítások végrehajtódnak a Data property-ben tárolt adatokon. Ha a LogChanges property értéke hamis, akkor a módosítások rögtön a data property-ben történnek meg. Ez utóbbit csak akkor használjuk, ha az adatkészlet csak olvasható módban van, mivel egyébként a változtatásokat nem fogjuk tudni véglegesíteni.
MasterFields
Osztály: TCustomClientDataSet
property MasterFields: string;
A master-detail kapcsolatnál a master tábla kulcs mezőinek nevei, pontosvesszővel elválasztva egymástól.
MasterSource
Osztály: TCustomClientDataSet
property MasterSource: TDataSource;
Master-detail kapcsolatnál a master tábla DataSource komponense. Miután beállítottuk ennek a property-nek az értékét, meg kell adnunk a MasterFields property-ben azokat a kulcsmezőket, melyekkel létrehozzuk a kapcsolatot.
PacketRecords
Osztály: TCustomClientDataSet
property PacketRecords: Integer;
A property-vel meghatározhatjuk, hogy egy adatcsomagban egyszerre hány rekord lehet, illetve azt, hogy csak a meta-adatok jöjjenek-e le. Ha a property értéke -1, akkor az összes rekord egyszerre kerül letöltésre. Ha nagyobb, mint 0, akkor az az egyszerre letölthető rekordok számát adja meg, ha pedig 0, akkor csak a meta-adatok (adatbázis felépítése) töltődnek le. Az előbbi esetben, tehát amikor a property értéke nagyobb, mint 0, az adatok egymás után töltődnek le, az adatbázis szerver meghatározza, hogy pontosan honnan. Ezt a kommunikációt megelőzi a BeforeGetRecords esemény.
Params
Osztály: TCustomClientDataSet
property Params: TParams;
A CommandText property-ben megadott SQL lekérdezés vagy tárolt eljárás paramétereit tartalmazó property, amelyben az egyes paraméterek tulajdonságát és értékét állíthatjuk be, illetve tárolt eljárásnál az output paramétereket is ezen keresztül érhetjük el.
ProviderName
Osztály: TCustomClientDataSet
property ProviderName: string;
Ha az adatok egy provider-en keresztül jutnak el az adatkészlethez, illetve azon keresztül vannak frissítve, akkor a provider nevét ebben a property-ben adhatjuk meg. Ennek a property-nek az értéke lesz paraméterként felhasználva az IAppServer interfésznél, amikor az adatok lekérdezésre, illetve frissítésre kerülnek.
A property-ben megadott nevű provider lehet ugyanabban az alkalmazásban, amelyben a ClientDataSet komponens, illetve lehet egy másik rendszeren futó kiszolgálóban is. Ha ugyanabban az alkalmazásban helyezkedik el, akkor az Owner-nek meg kell egyeznie. Ha az Owner nem egyezne meg, akkor használjuk inkább a SetProvider metódust.
Ha a provider egy távoli kiszolgáló alkalmazásban van, akkor exportálva kell lennie. Ha a kapcsolatot létrehozó komponens (connection) Web vagy socket kapcsolatot hoz létre, vagy az alkalmazás kiszolgáló regisztrálva van a kliens rendszeren (TRegsvr.exe), valamint a RemoteServer property meg van adva, akkor a ProviderName property-ben kiválasztható a neve a legördülő listából (Object Inspector).
ReadOnly
Osztály: TCustomClientDataSet
property ReadOnly: Boolean;
Ha a property értéke igaz, akkor az adatokat nem lehet módosítani. Az alapértelmezett értéke hamis, tehát az adatok módosíthatók. Ha a property értéke igaz, akkor a CanModify property értéke hamis, és fordítva.
RecNo
Osztály: TCustomClientDataSet
property RecNo: Integer;
A property-ből megtudhatjuk az aktuális rekord sorszámát, illetve ha értéket adunk a property-nek, akkor ezzel rápozícionálhatunk a megadott sorszámú rekordra.
RecordCount
Osztály: TCustomClientDataSet
property RecordCount: Integer;
A property az adatkészletben található rekordok számát adja meg. Ha a PacketRecords property értéke nagyobb, mint 0, akkor a property értéke megváltozhat, mialatt a provider fogadja az adatokat.
A RecNo property-vel együtt használható az adatkészlet összes rekordjának elérésére, de erre általában a First, Last, MoveBy, és Prior eljárásokat használjuk.
RecordSize
Osztály: TCustomClientDataSet
property RecordSize: Word;
Annak a buffernek a fizikai mérete bájtban, amibe a rekord adatai beolvasásra kerülnek. Az alkalmazásokban nagyon ritkán van szükség erre az információra, de ha mégis, akkor ebből a property-ből megtudható.
RemoteServer
Osztály: TCustomClientDataSet
property RemoteServer: TCustomRemoteServer;
Ebben a property-ben adhatjuk meg az a connection komponenst, amin keresztül a kiszolgálóhoz kapcsoljuk az adatkészletet. A connection komponens meghatározza a kiszolgáló helyét és szolgáltatja az IAppServer interfészt, amin keresztül az adatkészlet kommunikálni tud a távoli adatszolgáltatóval (provider-rel).
Használhatjuk a LocalConnection komponenst is akkor, amikor a provider is ugyanabban az alkalmazásban található, mint az adatkészlet komponens (ClientDataSet). Ebben az esetben viszont választhatunk más megoldást is.
A komponenst használhat több connection komponenst is, ebben az esetben futásidőben is megadhatjuk a property-ben a használandó connection komponenst.
Ha több kliens adatkészlet (ClientDataSet) használja ugyanazt a connection komponenst, és várható, hogy később ez a connection komponens megváltozik (pl. más protokollt használunk), akkor használhatjuk a ConnectionBroker property-t a kapcsolatok központosítására.

Cikksorozat

#IDKategóriaCikk címeSorozat
2591WindowsTippek és trükkök - RAS - Modem csengetési szám állítása1. rész
2622WindowsTippek és trükkök - Program futtatása más felhasználóként2. rész
2640WindowsA Windows ikonméretének megváltoztatása és Windows 2000 Asztaltémák3. rész
2657WindowsTippek és trükkök - Internet Explorer4. rész
2667WindowsTippek és trükkök5. rész
2684WindowsAlapértelmezések állítása, telepítési fájlok helye, intéző nézetek6. rész
2696WindowsBiztonsági trükkök7. rész
2702WindowsWindows XP trükkök8. rész
2729WindowsWindows 2000 és XP tippek, trükkök9. rész
2757WindowsRegistry trükkök10. rész
2784WindowsTippek, trükkök11. rész
2829WindowsTippek, trükkök12. rész
2889WindowsWindows XP tippek13. rész
2909WindowsTippek Windows XP-hez14. rész
2919WindowsWindows tippek15. rész
2924WindowsWindows tippek16. rész
2963WindowsWindows tippek17. rész
2973WindowsWindows Tippek18. rész
2981WindowsWindows tippek19. rész
2990WindowsTippek-trükkök20. rész
3027WindowsIIS tippek21. rész
3034WindowsWindows XP tippek-trükkök22. rész
3088WindowsWindows 2000/XP tippek, trükkök23. rész
3133WindowsWindows XP tippcsokor24. rész
3140WindowsWindows XP tippek, trükkök25. rész
3152WindowsXP és IIS tippek - trükkök26. rész
3158WindowsWindows XP tippek, trükkök27. rész
3168WindowsTippek, trükkök28. rész
3170WindowsRegistry trükkök29. rész
3179WindowsTippek, trükkök30. rész
3197WindowsWindows XP tippek, trükkök31. rész
3205WindowsTippek, trükkök32. rész
3214WindowsTippek, trükkök33. rész
3223WindowsTippek, trükkök34. rész
3233WindowsTippek, trükkök35. rész
3271WindowsTippek, trükkök36. rész
3307WindowsTippek, trükkök37. rész
3370WindowsTippek, trükkök38. rész
3399WindowsTippek, trükkök39. rész
3510WindowsTippek, trükkök40. rész
3611WindowsHardverrel kapcsolatos tippek, trükkök41. rész
3668WindowsRegistry trükkök42. rész
3711WindowsTippek, trükkök43. rész
3771WindowsTippek, trükkök44. rész
3801WindowsTippek, trükkök45. rész
3831WindowsTippek, trükkök46. rész
3891WindowsTippek, trükkök47. rész
3921WindowsTippek, trükkök48. rész
3981WindowsTippek, trükkök49. rész
4041WindowsTippek, trükkök50. rész
4071WindowsTippek, trükkök51. rész
4151WindowsTippek, trükkök52. rész
4171C#Tippek, trükkök53. rész
4211WindowsTippek, trükkök54. rész
4251WindowsTippek, trükkök55. rész
4281WindowsTippek, trükkök56. rész
3589DelphiTippek, trükkök57. rész
3718DelphiTippek, trükkök58. rész


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