
Mielőtt futtatná a project1.dpr-ben szereplő példaprogramot, fordítsa le a change.dpr projectet, majd a létrejövő change.exe állományt helyezze el a C meghajtó főkönyvtárában.
Futtasa le a Run_script.cmd állományt, majd a mellékelt project1.dpr alkalmazás, UMain.pas forráskód ADOConnection1 objektumának ConnectionString értékét módosítsa úgy, hogy a ChangeDemo adatbázis elérhetővé váljon.
Ahhoz hogy az adattáblában történt változásokat a többi számítógépről is nyomon tudjuk követni, szükségünk van egy fizikai állományra, amelyet minden futó program egyaránt elér.
A change.exe programnak mindössze annyi dolga van, hogy egy change.txt nevű állományt létrehozzon, minden egyes alkalommal, amikor a change program elindul.
A change programot egy trigger fogja futtatni, minden egyes alkalommal, amikor az adattáblában valamilyen változás történik. Ez a trigger a következő.
CREATE TRIGGER ChangeCache ON [dbo].[ChangeTable]
FOR INSERT, UPDATE, DELETE
AS
begin
DECLARE @s VarChar(100)
SET @s ='C:\change.exe '
EXEC Master..xp_cmdshell @s
end
Ha a mellékelt példaprogramot hálózatban akarjuk használni, a trigger belsejében módosítanunk kell a change.exe elérési útját, a hálózati elérési útnak megfelelően.
Amikor elkészítjük az SQL adatbázist kezelő kliens programot, egy ADOQuery komponens segítségével bármilyen lekérdezést végrehajthatunk. Egy Timer komponens segítségével folyamatosan figyelhetjük a change.txt állomány időpontjának változását, ha az állomány időpontja eltér az előzőtől, akkor frissítenünk kell az ADOQuery komponens tartalmát.
A change.txt állomány előző módosításának idejét az FTimer, String típusú változóban tároljuk el.
A change.txt állomány utolsó módosításának idejét a FindFirstFile segítségével lekérdezhetjük.
Handle:=FindFirstFile(COMFILE,fd);
Az fd paraméterben egy TWin32FindData típusú struktúrát kapunk vissza, melynek ftLastWriteTime mezőjéből megtudjuk az utolsó módosítás idejét.
Ezt a lekérdezett, TFileTime típusú dátum-időt a FileTimeToDateTimeStr függvény segítségével sztringgé alakítjuk.
function FileTimeToDateTimeStr(ft: TFileTime): String;
Az ADOQuery1-ben szereplő lekérdezést úgy tudjuk frissíteni, hogy egymás után kiadjuk a Close és az Open parancsokat. Ha használjuk a Bookmark tulajdonságot, valamint a DisableControls és az EnableControls metódusokat, akkor a felhasználó a frissítésből semmit nem fog észrevenni.
A frissítést csak akkor hajthatjuk végre, ha a tábla tallózás üzemmódban van.
if State=dsBrowse then begin