Delphi - Query lekérdezés megszakítása futás közben

forráskód letöltése
Hosszas lekérdezések futtatásakor sok esetben jó lenne lehetőséget biztosítani a felhasználó számára, hogy menetközben leállítsa azokat, arról az esetről nem is beszélve, ha egy véletlen kattintással indította el azokat.

A mellékelt példában bemutatásra kerül, hogy egy TQuery komponens által futtatott lekérdezést miként lehet menetközben leállítani. A megoldáshoz kell készítenünk egy ún. callback függvényt, melyet a BDE fog meghívni, amikor az szükségessé válik.

A Delphi-ben a TBDECallback nevű osztály lesz segítségünkre ennek kezelésében.

Amikor egy adott BDE műveletet figyelni akarunk, akkor hozunk létre egy példányt a TBDECallback-ból. Ekkor megtörténik a függvényünk regisztrálása a BDE felé. Paraméterként a cbCANCELQRY konstanst megadva a DoCallBack függvényünk - melyet szintén paraméterként adunk át - akkor kerül meghívásra, mikor egy hosszú lekérdezés fut. Ekkor rendszeres időközönként meghívódik a DoCallBack függvényünk, melynél ha cbrCONTINUE konstanst adjuk visszatérési értékként, akkor folytatódik a lekérdezés, míg ha a cbrABORT konstanst, akkor megszakad.