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));