CLEAR CLOSE DATABASES ALL LOCAL oXC oXC = CREATEOBJECT('xcADO') llRetVal = oXC.GetSQLData() IF llRetVal INSERT INTO crsPresidents (LoginID, LastName, FirstName) ; VALUES ('MMCCASLA', 'McCasland', 'Mark') llRetVal = oXC.SaveData() IF llRetVal BROWSE ELSE MESSAGEBOX('Save or RecordRefresh failed.') ENDIF ELSE MESSAGEBOX('CursorFill Failed') ENDIF oXC.RELEASE() RETURN DEFINE CLASS xcADO AS CURSORADAPTER ALIAS = [crsPresidents] USECURSORSCHEMA = .T. NODATA = .F. CURSORSCHEMA = [KeyID I,LoginID V(8),LastName V(30),FirstName V(30),Updated_By V(8),Last_Update T] BUFFERMODEOVERRIDE = 5 DATASOURCETYPE = [ADO] ALLOWINSERT = .T. TABLES = [Presidents] KEYFIELDLIST = [KeyID] UPDATABLEFIELDLIST = [LoginID,LastName,FirstName,Updated_By] SELECTCMD = [SELECT * FROM Presidents WHERE KeyID > 39 ORDER BY KeyID] INSERTCMDREFRESHFIELDLIST = [KeyID, Last_Update] INSERTCMDREFRESHKEYFIELDLIST = [KeyID] INSERTCMDREFRESHCMD = [SELECT KeyID, Last_Update FROM Presidents] DIMENSION aErrorInfo(1) nErrors = 0 lFilled = .F. lSaved = .F. lRefreshed = .F. PROTECTED PROCEDURE INIT CLEAR THIS.MAPVARCHAR= .T. TEXT TO THIS.UPDATENAMELIST NOSHOW PRETEXT 10 KeyID Presidents.KeyID, LoginID Presidents.LoginID, LastName Presidents.LastName, FirstName Presidents.FirstName, Last_Update Presidents.Last_Update, Updated_By Presidents.Updated_By ENDTEXT THIS.ADDPROPERTY('oConn', NEWOBJECT('ADODB.Connection')) THIS.ADDPROPERTY('oRS', NEWOBJECT('ADODB.Recordset')) THIS.ADDPROPERTY('oCommand', NEWOBJECT('ADODB.Command')) WITH THIS.oConn .CursorLocation = 3 TEXT TO .ConnectionString TEXTMERGE NOSHOW PRETEXT 10 Provider=OraOLEDB.Oracle.1; Password=mark;Persist Security Info=True; User ID=mark;Data Source=local ENDTEXT .OPEN() ENDWITH THIS.oCommand.ActiveConnection = THIS.oConn WITH THIS.oRS .ActiveConnection = THIS.oConn .CursorType = 1 && adOpenKeyset .CursorLocation = 3 && adUseClient .LockType = 3 && adLockOptimistic ENDWITH THIS.DATASOURCE = THIS.oRS THIS.REFRESHCMDDATASOURCETYPE = [ADO] THIS.REFRESHCMDDATASOURCE = THIS.oCommand ENDPROC PROTECTED PROCEDURE DESTROY THIS.oRS = .NULL. THIS.oConn = .NULL. THIS.oCommand = .NULL. ENDPROC PROCEDURE RELEASE RELEASE THIS ENDPROC PROCEDURE GetSQLData THIS.ResetError() THIS.lFilled = THIS.CURSORFILL(THIS.USECURSORSCHEMA, THIS.NODATA, -1, THIS.oCommand) IF NOT THIS.lFilled THIS.nErrors = AERROR(THIS.aErrorInfo) ENDIF RETURN THIS.lFilled ENDPROC PROCEDURE SaveData THIS.ResetError() THIS.lSaved = .T. CLEAR ERROR SELECT crsPresidents THIS.lSaved = TABLEUPDATE(1, .F., 'crsPresidents') SET STEP ON IF NOT THIS.lSaved THIS.nErrors = AERROR(THIS.aErrorInfo) THIS.ShowErrorInfo() DEBUG ELSE BROWSE ?"Saved!!!" nRecNo=RECNO() LIST GO (nRecNo) THIS.oConn.Execute("UPDATE Presidents SET Last_Update=SYSDATE,Updated_By ='ALEKSEYT'") CLEAR ERROR THIS.lRefreshed = (THIS.RECORDREFRESH(1) > 0) IF !THIS.lRefreshed &&< 0 SET STEP ON THIS.nErrors = AERROR(THIS.aErrorInfo) ELSE ?"Refreshed!!!" LIST ENDIF ENDIF RETURN THIS.lSaved AND THIS.lRefreshed ENDPROC PROTECTED PROCEDURE ResetError CLEAR ERROR THIS.nErrors = 0 THIS.aErrorInfo = [] ENDPROC PROCEDURE ShowErrorInfo LOCAL lnI FOR lnI = 1 TO ALEN(THIS.aErrorInfo) ? THIS.aErrorInfo(lnI) IF MOD(lnI, 7) = 0 ? ENDIF ENDFOR ENDPROC ENDDEFINE