HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Hányan használják az adattáblát?


Példaprogram letöltése

3938 bájt

Adatbázisokat kezelő programok fejlesztésénél sokszor szükségünk lehet arra az információra, hogy egy tábla éppen használatban van-e, ha igen, akkor esetleg felmerülhet a kérdés, hogy hányan használják. Ebben a példában erre a kérdésre keressük a választ. Megtudhatjuk, hogy hogyan kell lekérdezni, hogy egy tábla hány helyről van megnyitva.

Számos olyan adatbázis művelet van, amely kizárólagos táblahasználatot igényel. Ilyen például egy tábla szerkezetének a megváltoztatása, vagy akár egy újraindexelés is. Ilyenkor fontos, hogy a táblát csak mi nyissuk meg. Néha olyankor kell ezeket a műveleteket elvégeznünk, amikor senki más nem használja a táblát.
Amikor egy felhasználó vagy egy program csatlakozik a táblához, az mindig egy újabb kapcsolat létrejöttét jelenti.
A tábla kapcsolatainak összeszámolását a BDE unit függvényei segítségével tudjuk végrehajtani.
Amikor egy felhasználó csatlakozik egy táblához, az a táblánál egy zárolási bejegyzést hoz létre. Ezekről a zárolásokról a DbiOpenLockList, BDE függvény segítségével listát kaphatunk.
Check(DbiOpenLockList(Table1.Handle,True,True,TmpCursor));
DbiOpenLockList
function DbiOpenLockList (
hCursor: hDBICur;
bAllUsers: Bool;
bAllLockTypes: Bool;
var hLocks: hDBICur
): DBIResult
A memóriában létrehoz egy listát a táblához tartozó zárolási bejegyzésekről.
Paraméterek
hCursor: hDBICur
A tábla azonosítója.
bAllUsers: Bool
Ha igaz értéket adunk meg, akkor a táblához tartozó összes kapcsolat bekerül a listába, hamis érték megadása esetén csak az aktuális. DBase és FoxPro táblák esetén ezt az értéket hamisra kell állítani.
bAllLockTypes: Bool
Igaz érték megadása esetén a létrejövő listába mindenfajta zárolási bejegyzés felsorolásra kerül. Ha hamis értéket adunk meg, akkor csak a rekordzárolások kerülnek a listába.
var hLocks: hDBICur
Az itt megadott változóba kerül a lekérdezett lista.
Visszatérési érték
Sikeres lefutás esetén a függvény a DBIERR_NONE értékkel tér vissza, ellenkező esetben a visszatérési érték DBIERR_INVALIDHNDL.
A DbiSetToBegin függvény a lekérdezett lista rekordmutatóját a lista elejére helyezi.
Check(DbiSetToBegin(TmpCursor));
A lekérdezett lista egyes elemeit a DbiGetNextRecord függvénnyel érhetjük el.
DbiGetNextRecord
function DbiGetNextRecord (
hCursor: hDBICur;
eLock: DBILockType;
pRecBuff: Pointer;
precProps: pRECProps
): DBIResult;
Egy eredménylista soron következő rekordjának lekérdezésére szolgál.
Paraméterek
hCursor: hDBICur
A lista azonosítója.
eLock: DBILockType
A zárolási bejegyzés típusa. Használható konstansok: dbiNOLOCK – nincs zárolás, dbiREADLOCK -olvasás, dbiWRITELOCK -írás.
pRecBuff: Pointer
Az adat az itt megadott változóba kerül lekérdezésre.
precProps: pRECProps
Használata opcionális. Ha megadunk egy pRECProps típusú objektumot, akkor az adott rekord tulajdonságait kapjuk meg benne. Ha nincs szükségünk ezekre az adatokra, akkor használhatjuk a Nil paramétert is.
Visszatérési érték
Ha a rekord kiolvasása sikeres volt, akkor a visszatérési érték DBIERR_NONE. Ha a beolvasás során a lista végére értünk, akkor a DBIERR_EOF értéket kapjuk vissza.
A lista aktuális rekordja a LockInfo változóba kerül. A LockInfo struktúra iType mezőjéből megtudhatjuk a zárolás típusát. Ezek a következők lehetnek:
Érték Típus
0 Rekord zárolás
4 Kapcsolódás
5 Olvasás
6 Írás
7 Kizárólagos használat
Nekünk a 4-es értékeket kell összeszámolnunk, ez alapján tudjuk meg, hogy a táblát hány program vagy felhasználó használja.
A lista feldolgozását a DbiCloseCursor függvénnyel zárjuk le.
Check(DbiCloseCursor(TmpCursor));

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