Según tengo entendido, TBookmark es solo un puntero al buffer de datos que tenga el TAdoTable.
Por lo tanto, si creas el TBookmark, cierras y abres la tabla y luego vas a donde apunta TBookmark, no necesariamente irás al mismo lugar. Puede ser que alguien haya creado más registros o borrado alguno mientras tenías abierta la tabla.
Yo trato de no utilizar esto a menos que esté seguro de que no se modificarán los datos.
Lo más normal para mi, en entorno multiusuario, es crear mi propio Bookmark.
Código Delphi
[-]
var
Bookmark :string;
[...]
with Tabla do
begin
DisableControls;
Bookmark := FieldByName('EJERCICIO').AsString+'-'+FieldByName('NUMERO').AsString+'-'+FieldByName('LINEA').AsString;
Close;
Open;
while ( (Bookmark <> FieldByName('EJERCICIO').AsString+'-'+FieldByName('NUMERO').AsString+'-'+FieldByName('LINEA').AsString) and (not EOF)) ) do
Next;
EnableControls;
end;