HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

A ClientDataSet komponens


ClientDataSet 6. rész

Példaprogram letöltése

5139 bájt

A TClientDataSet osztályról szóló cikksorozat hatodik részében folytatjuk az osztály metódusainak ismertetését. A mellékelt példa bemutatja, hogy hogyan tudunk egy adatkészletben tartományokat meghatározni, amelyek hasonlóan a szűréshez, az adatkészlet rekordjainak csak egy meghatározott csoportját teszik elérhetővé. A tartomány meghatározása után az adatkészletben csak a tartományban lévő rekordok láthatók.

Lookup
Osztály: TCustomClientDataSet
function Lookup(
const KeyFields: string;
const KeyValues: Variant;
const ResultFields: string
): Variant;
A függvény megkeresi a megadott kulccsal rendelkező rekordot, és a szintén megadott mezők értékeivel tér vissza.
Paraméterek
const KeyFields: string
A KeyFields paraméterben kell pontosvesszővel elválasztva megadni azokat a mezőket, amelyekben keresni szeretnénk.
const KeyValues: Variant
A KeyValues paraméterben a keresett értékeket tudjuk megadni, ugyanúgy, mint a Locate függvénynél.
const ResultFields: string
A ResultFields paraméterben azokat a mezőket kell megadni, amelyekben tárolt adatokra szükségünk van. A mezőneveket itt is pontosvesszővel kell egymástól elválasztani.
Visszatérési érték
A függvény visszatérési értéke egy tömb, amelynek Variant típusú elemei a ResultFields paraméterben megadott mezők adatait tartalmazzák.
MergeChangeLog;
Osztály: TCustomClientDataSet
procedure MergeChangeLog;
A naplózott módosításokat végrehajtja az adatokon.
Post;
Osztály: TCustomClientDataSet
procedure Post;
Ha az adatkészlet aktuális rekordja módosítva lett, akkor ezzel az eljárással tudjuk tárolni az új adatokat. Ez csak akkor lehetséges, ha az adatkészlet az Edit, Insert vagy Append metódusok meghívása utáni állapotba kerül (State=dsEdit vagy dsInsert). Ha az adatkészlet ebben az állapotban volt, akkor egy másik rekordra történő pozícionáláskor a Post metódus automatikusan meghívódik (pl. a First, Last, Next vagy Prior metódusk hatására).
Ha a LogChanges property értéke igaz, akkor a változtatások a Delta property-ben megadott naplóban kerülnek tárolásra. Ha a LogChanges property értéke hamis, akkor a változtatások a Data property-be kerülnek tárolásra.
Reconcile
Osztály: TCustomClientDataSet
function Reconcile(
const Results: OleVariant
): Boolean;
Törli a véglegesített módosításokat. Általában az ApplyUpdates függvény hívja meg automatikusan, miután a módosításokat véglegesítette. A függvény generál minden hibás rekordnál egy OnReconcileError eseményt. A Delta property a függvényhívás után csak azokat a rekordokat fogja tartalmazni, melyeket nem sikerült véglegesíteni, méghozzá az OnReconcileError eseményben módosított adatokkal.
Paraméterek
const Results: OleVariant
A Results paraméter egy Variant típusú érték, ami tartalmazza azokat a rekordokat, amelyeket valamilyen hiba folytán nem sikerült véglegesíteni, illetve a hibára vonatkozó információkat is.
Visszatérési érték
Ha a véglegesítés során nem volt hibás rekord, akkor a függvény visszatérési értéke igaz, ellenkező esetben hamis.
RefreshRecord;
Osztály: TCustomClientDataSet
procedure RefreshRecord;
Az eljárás az aktuális rekord adatait újra lekérdezi az adatbázis szerverről. Ez azt jelenti, hogy a rekordban elvégzett, de még nem véglegesített módosítások is elvesznek.
RevertRecord;
Osztály: TCustomClientDataSet
procedure RevertRecord;
Törli az aktuális rekord összes eddig elvégzett módosítását, azokat, amelyek még nem lettek véglegesítve.
SaveToFile
Osztály: TCustomClientDataSet
procedure SaveToFile(
const FileName: string = '';
Format TDataPacketFormat=dfBinary
);
Elmenti az adatkészletet a paraméterként megadott fájlba. Ha a fájl már létezett, akkor azt felülírja.
Paraméterek
const FileName: string = ''
Ha a FileName paraméter egy üres sztring, vagy nincs megadva, akkor a FileName property-ben megadott fájlba menti az adatokat.
Format TDataPacketFormat=dfBinary
A Format paraméterben megadhatjuk a fájl formátumát. Ezek a következők lehetnek:
  • dfBinary: bináris formátum;
  • dfXML: XML formátum;
  • dfXMLUTF8: XML formátum UTF8 kiterjesztett karakterkészlettel.
SaveToStream
Osztály: TCustomClientDataSet
procedure SaveToStream(
Stream: TStream;
Format TDataPacketFormat=dfBinary
);
Az adatkészletet elmenti egy adatfolyamba (TStream). A DataSize property-ből megtudható, hogy mekkora bufferre van szükség a mentéshez.
Paraméterek
Stream: TStream
Ebben a TStream objektumba menti el az adatkészletet.
Format TDataPacketFormat=dfBinary
A Format paraméterben megadhatjuk a fájl formátumát. Ezek a következők lehetnek:
  • dfBinary: bináris formátum;
  • dfXML: XML formátum;
  • dfXMLUTF8: XML formátum UTF8 kiterjesztett karakterkészlettel.
SetAltRecBuffers
Osztály: TCustomClientDataSet
procedure SetAltRecBuffers(
Old,
New,
Cur: PChar
);
Az Old, New és Cur paraméterekben megadhatjuk azoknak a buffereknek a pointereit, amelyeken keresztül field komponens OldValue, NewValue és CurValue property-jeihez férhetünk hozzá. Normális esetben ennek az eljárásnak a használatára nincs szükség.
Paraméterek
Old
A mező „régi” tartalma.
New
A mező új tartalma.
Cur: PChar
A mező aktuális tartalma.
SetKey;
Osztály: TCustomClientDataSet
procedure SetKey;
A SetKey eljárás annyiban különbözik az EditKey-től, hogy ez az előzőleg definiált keresési kulcsot törli.
SetOptionalParam
Osztály: TCustomClientDataSet
procedure SetOptionalParam(
const ParamName: string;
const Value: OleVariant;
IncludeInDelta: Boolean = False
);
Az eljárással saját adatokat fűzhetünk hozzá az adatcsomaghoz. Ezek az adatok mentésre kerülnek a data property tartalmával együtt, amikor fájlba, vagy egy stream-be (TStream) másoljuk azt. Az ilyen módon megadott adatokat a GetOptionalParam függvénnyel kérdezhetjük le.
Paraméterek
const ParamName: string
A ParamName paraméterben megadhatjuk az információ nevét, amivel az eltárolt adatokat azonosítani szeretnénk. Ez egy tetszőleges sztring lehet, a következők kivételével: UNIQUE_KEY, DEFAULT_ORDER, CHANGE_LOG, SERVER_COL, CONSTRAINTS, DATASET_CONTEXT, DATASET_DELTA, LCID, BDERECORD_X, TABLE_NAME, MD_FIELDLINKS, UPDATEMODE.
const Value: OleVariant
A Value paraméter OleVariant típusú, ez tartalmazza azokat az adatokat, amelyeket az adatcsomaghoz szeretnénk kapcsolni.
IncludeInDelta: Boolean = False
Ha az IncludeInDelta paraméter értéke igaz (alapértelmezetten hamis), akkor az adatok a Delta property-ben is eltárolódnak, ami azt jelenti, hogy az adatok véglegesítésekor ezek is el lesznek küldve a provider-nek. Ekkor az OnUpdateData eseményben lekérdezhetjük ezeket az adatokat a GetOptionalParam függvénnyel.
SetProvider
Osztály: TCustomClientDataSet
procedure SetProvider(
Provider: TComponent
);
Ezzel az eljárással adhatjuk meg azt a provider-t, ami az adatkészletnek szolgáltatja az adatokat, illetve ami a módosított adatok tárolását végzi el. A komponens a providerrel az AppServer property által meghatározott IAppServer interfészen keresztül kommunikál.
Ne használjuk ezt a metódust akkor, ha a provider egy távoli kiszolgálón található, valamint akkor, ha a komponens már használ egy helyi provider komponenst.
Ha bezártuk az adatkészletet, majd újra megnyitjuk, akkor a SetProvider metódust újra kell használnunk a provider megadására, amennyiben előzőleg is ezt használtuk.
Paraméterek
Provider: TComponent
Ebben a paraméterben adhatjuk meg a provider osztályt. Ennek az osztálynak a TCustomProvider osztályból kell származnia, különben kivétel keletkezik.
SetRange
Osztály: TCustomClientDataSet
procedure SetRange(
const StartValues,
EndValues: array of const
);
A tartomány elejét és végét adhatjuk meg egy lépésben a StartValues és EndValues paraméterekkel. Mindkét paraméter tömb típusú, így annyi értéket adhatunk meg bennük, amennyi mezőből az aktuális index áll. Ha ennél kevesebbet adunk meg, akkor a meg nem adott értékeknél NULL-t fog figyelembe venni.
Az eljárással egy lépésben megoldhatjuk azt, amit a SetRangeStart, SetRangeEnd, és ApplyRange eljárásokkal tudunk egyébként megtenni.
ClientDataSet1.SetRange([10, ’A’], [20, ’J’]);
Paraméterek
const StartValues
Ebben a paraméterben adhatjuk meg a tartomány elejét meghatározó rekord adatait.
EndValues: array of const
Ebben a paraméterben adhatjuk meg a tartomány végét meghatározó rekord adatait.
SetRangeEnd;
Osztály: TCustomClientDataSet
procedure SetRangeEnd;
Az adatkészletet dsSetKey állapotba állítja. Ezután a FieldByName függvénnyel megadhatjuk azt a rekordot, amely a tartomány utolsó rekordja lesz. A tartomány aktualizálása az ApplyRange eljárással történhet meg.
with ClientDataSet1 do begin
  SetRangeStart;
  FieldByName(’Sorszam’).AsInteger:=10;
  SetRangeEnd;
  FieldByName(’Sorszam’).AsInteger:=99;
  ApplyRange;
end;
SetRangeStart;
Osztály: TCustomClientDataSet
procedure SetRangeStart;
Az adatkészletet dsSetKey állapotba állítja. Ekkor megadhatjuk a FieldByName függvénnyel azt a rekordot, amely a tartomány első rekordja lesz. A tartomány aktualizálása az ApplyRange eljárással történhet. Előtte azonban általában van még egy SetRangeEnd eljárás, ami után a tartomány végét jelentő rekordot adhatjuk meg.

Cikksorozat

#IDKategóriaCikk címeSorozat
3047WindowsAz XML bemutatása1. rész
3059WindowsAz XML bemutatása2. rész
3068WindowsAz XML bemutatása3. rész
3077WindowsAz XML bemutatása - deklarációk4. rész
3086WindowsAz XML bemutatása - MSXML, XSLT5. rész
3094WindowsAz XML bemutatása - DTD6. rész
3105WindowsXML adatok megjelenítése Excel-ben7. rész
3114WindowsDokumentum hivatkozások az XML-ben8. rész
3123WindowsXML adattípusok9. rész
3132WindowsXML adatok HTML oldalakon10. rész
3141WindowsXML Notepad11. rész


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