>>LOCAL oAdapter >> >>oAdapter = CREATEOBJECT("CursorAdapter") >> >>WITH oAdapter >> >>.Alias = "ErrRecord" >>.AllowInsert = TRUE >> >>.CursorSchema =; >> "RecordId C(8), "+; >> "DateTime D, "+; >> "Error N(10), "+; >> "Line N(10), "+; >> "Message M, "+; >> "CodeLine M, "+; >> "Program M, "+; >> "User C(25), "+; >> "AppName C(20), "+; >> "NetWrkName C(30), "+; >> "Memory M, "+; >> "Status M, "+; >> "CallStack M" >> >>.DataSourceType = "Native" >>.KeyFieldList = "RecordId" >>.Tables = "SysErrors" >> >>.UpdatableFieldList =; >> "RecordId, DateTime, Error, Line, Message, " +; >> "CodeLine, Program, User, AppName, NetWrkName, "+; >> "Memory, Status, CallStack" >> >>.UpdateNameList =; >> "RecordId Errors.RecordId,"+; >> "DateTime Errors.DateTime,"+; >> "Error Errors.Error,"+; >> "Line Errors.Line,"+; >> "Message Errors.Message,"+; >> "CodeLine Errors.CodeLine,"+; >> "Program Errors.Program,"+; >> "User Errors.User,"+; >> "AppName Errors.AppName,"+; >> "NetWrkName Errors.NetWrkName,"+; >> "Memory Errors.Memory,"+; >> "Status Errors.Status,"+; >> "CallStack Errors.CallStack" >> >>.SelectCmd = "select * from syserrors where RECNO() = 1" >>.SendUpdates = .T. >> >>IF .CursorFill(TRUE, FALSE) >>* IF .CursorFill(FALSE, FALSE) >> >> SELECT ErrRecord >> SCATTER NAME oRecord BLANK MEMO >> >> oRecord.RecordId = This.sRecordId >> oRecord.DateTime = DATETIME() >> oRecord.Error = This._iError >> oRecord.Line = This._iLine >> oRecord.Message = This._sMessage >> oRecord.CodeLine = This._sCodeLine >> oRecord.Program = This._sProgram >> oRecord.User = This._sUser >> oRecord.AppName = This._sAppName >> oRecord.NetwrkName = This._sNetwrkName >> oRecord.Status = This._sStatus >> oRecord.Memory = This._sMemory >> oRecord.CallStack = This._sCallStack >> >> GATHER NAME oRecord MEMO >> >> =TABLEUPDATE(TRUE) >> >>ELSE >> ** Handle error here >> AERROR(aErrInfo) >> iErr = aErrInfo[1] >> sErr = aErrInfo[2] >> MESSAGEBOX(TRANSFORM(iErr) + " - " + sErr,48, "Error") >>ENDIF >> >>ENDWITH >>