IF USED("curTestData") USE IN curTestData ENDIF IF FILE("curTestData.dbf") ERASE curTestData.dbf ERASE curTestData.fpt ENDIF CREATE TABLE curTestData (textColumn Varchar(20), numColumn I) USE curTestData SHARED INSERT INTO curTestData VALUES ("name", 1) INSERT INTO curTestData VALUES ("other", 2) GO TOP IN curTestData LOCAL loForm AS aNormalDataHandlerForm m.loForm = CREATEOBJECT("aNormalDataHandlerForm") m.loForm.aGrid.RecordSource = "curTestData" m.loForm.Show(1) DEFINE CLASS aNormalDataHandlerForm AS Form ADD OBJECT aGrid AS Grid WITH AllowAddNew = .T. ADD OBJECT aTimer AS DataChecker ENDDEFINE DEFINE CLASS DataChecker AS Timer Interval = 0 Checker = .NULL. PROCEDURE Init This.Checker = CREATEOBJECT("CheckData") IF !ISNULL(This.Checker) This.Interval = 10000 ENDIF RETURN !ISNULL(This.Checker) ENDPROC PROCEDURE Timer This.Checker.Process() ENDPROC ENDDEFINE DEFINE CLASS CheckData AS Session DataSession = 2 && private data session PROCEDURE Init USE curTestData SHARED ENDPROC PROCEDURE Destroy WAIT CLEAR ENDPROC PROCEDURE Process SELECT MAX(numColumn) AS maxColumn ; FROM curTestData ; INTO CURSOR curSummary SELECT curTestData GO BOTTOM WAIT WINDOW TRANSFORM(DATETIME()) + CHR(13) + ; "Records: " + TRANSFORM(RECCOUNT()) + CHR(13) + ; "Max number: " + TRANSFORM(curSummary.maxColumn) + CHR(13) + ; "Last text: " + textColumn ; NOWAIT NOCLEAR ENDPROC ENDDEFINE