Una manera facil para que entendais Absoluteposition y Bookmark, es a帽adirlo como columnas en un browse, as铆 podreis ver como se comporta uno y otro.
oCol:=oBrw:AddCol()
oCol:bStrData:={||Str(oRs:AbsolutePosition)}
oCol:cHeader:='AbsolutePosition'
oCol:=oBrw:AddCol()
oCol:bStrData:={||Str(oRs:BookMark,5,0)}
oCol:cHeader:='BookMark'
BookMark identifica univocamente un registro del recordset, y no varia durante la vida del recordset.
Absoluteposition se va renumerando segun la accion que ejecutemos sobre el recordset(Eliminar, a帽adir, ordenar, filtar, ....), identifica la posici贸n logica actual del registro.
Una imagen vale mas que mil palabras.
"SELECT * FROM CLIENTES" esta ordenado por CliCod

Cambiamos el orden del recordset con el metodo Sort(no hacemos nuevo select)

Aplicamos un filtro "CliCod>5"
P.D. CliCod y bookmark coinciden, pero es debido a que son unos datos de prueba creados secuencialmente, en el mundo real no tienen porque coincidir.