WITH THIS lsCurrentRow = curDisplay.UniqueID ZAP IN curDisplay && .SortOrder / .sortdirection are properties of the grid that contain field being sorted. && lsAccount and lsRecordType are assigned just previous to this code. lsSQL = "INSERT INTO curDisplay " +; "SELECT curWorking.UniqueID, curWorking.IsSelected, " +; "curWorking.Invert, curWorking.IsRestricted, " +; "!ISNULL(curWorking.Annotation) as HasNote," +; "curWorking.ClearDate, curRecon.SWDN, curRecon.PrimaryDoc, " +; "curRecon.CAAmount, curRecon.DAAmount, curRecon.AuditDate, " +; "curRecon.MachineDate, curRecon.SecondaryDoc, curRecon.Site, " +; "curRecon.Source, curRecon.GLC, curRecon.ReconMonth, " +; "curRecon.TransactionType, curRecon.LastRFA " +; "FROM curWorking WITH (BUFFERING = .T.) " +; "INNER JOIN curRecon ON curWorking.UniqueID = curRecon.UniqueID " +; "WHERE ISNULL(curWorking.MatchedTo) AND " +; "curRecon.RecordType = '" + lsRecordType + "' AND " +; "ALLTRIM(curRecon.Account + NVL(curRecon.CFI,'')) == '" + lsAccount + "' "+; IIF(THIS.Parent.chkDisplayCleared.Value, "" ,; "AND ISNULL(curWorking.ClearDate) ") +; "ORDER BY " + .SortOrder + " " + .SortDirection &lsSQL. && Keeps the same record highlighted as before the sort SELECT curDisplay GO TOP IN curDisplay LOCATE ALL FOR curDisplay.UniqueID = lsCurrentRow IF FOUND('curDisplay') GO RECORD (RECNO('curDisplay')) ELSE GO TOP IN curDisplay ENDIF .Refresh() .AutoFit() .Resize() ENDWITH && THIS2. In some circumstances, this method ignores the Controlsource assignments and populates from the table. RecordSourceType is Alias. Code in those circumstances is identical to the above. I've been using the Recordsource = '' method in these cases with no problems.