m.loCursorAdapter = CREATEOBJECT("CursorAdapter") m.loCursorAdapter.Alias = SYS(2015) m.loCursorAdapter.DataSourceType = "ADO" m.loCursorAdapter.DataSource = m.loRecordSet m.loCursorAdapter.SelectCmd = "Select " + m.lcSelectFields + " From [" + m.tcSheet + "]" IF m.loCursorAdapter.CursorFill(.F.,.T.) m.loCursorAdapter.Tables = "[" + m.tcSheet + "]" m.loCursorAdapter.BufferModeOverride = 3 && faster than 5 when dealing with larger record sets m.loCursorAdapter.UpdateNameList = m.lcUpdateNameListFields m.loCursorAdapter.UpdatableFieldList = m.lcUpdatableFieldList IF !EMPTY(m.lcConversionFunc) m.loCursorAdapter.ConversionFunc = m.lcConversionFunc ENDIF INSERT INTO (m.loCursorAdapter.Alias) SELECT * FROM (m.lcTempAlias) m.lnReturn = TABLEUPDATE(.T.,.T.,m.loCursorAdapter.Alias) ELSE AERROR(m.laErr) ERROR m.laErr(2) ENDIFStepping through this code shows that the m.loCursorAdapter.Alias has the correct data in it prior to the TABLEUPDATE(.T.,.T.,m.loCursorAdapter.Alias) and the return value is .T.