Page 1 of 1

Diferencias entre BookMark y AbsolutePosition ??

Posted: Tue Jun 03, 2008 2:02 am
by Armando
Amigos:

Algunas veces cuando elimino un registro de un RecordSet lo hace sin problemas pero algunas otras me tira un error mencionando el BookMark, por esto pregunto, ¿ alguien que me explique cuales son sus diferencias, donde y cuando usarlos ?

Saludos

Posted: Thu Jun 05, 2008 1:12 pm
by jbrita
Armando
oRcs:Delete()
oRcs:Move( -1 )

Posted: Thu Jun 05, 2008 4:33 pm
by Adolfo
Bookmark : Sirve para identificar su posicion unica dentro del recordset, sirve para grabarla y despues volver a acceder a ese registro, independientemente de los movimientos que se realizen, agregar o eliminar.

AbsolutePosition : es un orden, o sea, un numero ordinal para identificar posicion, si eliminas, los registros siguientes cambian su ordinal o absoluteposition. Va desde 1 hasta oRrs:recordcount

Eso.. espero te sirva la explicacion

Desde Chile
Adolfo

Posted: Thu Jun 05, 2008 4:53 pm
by Carlos Mora
Hola gente,

Podria decirse que, en términos de equivalencia, Bookmark es a OrdKeyVal() como AbsolutePosition es a RecNo(), no?

Un saludo,

Carlos.

Posted: Thu Jun 05, 2008 6:15 pm
by ADBLANCO
BookMark: Equivale al Recno() con set delete off
y
AbsolutePosition : sería la posición de acuerdo con el indice activo


Entendí Bién ???

Posted: Thu Jun 05, 2008 11:53 pm
by Armando
Adolfo, y el resto de los colegas:

Muchas gracias por sus aportes, me parece que la explicación de Adolfo no dió mucha luz al asunto o no la entendimos :oops: , dos de los colegas tienen la idea totalmente opuesta una de otra, cual sera la buena ?

Saludos

Posted: Fri Jun 06, 2008 8:15 am
by Biel EA6DD
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.

Code: Select all

   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

Image
Cambiamos el orden del recordset con el metodo Sort(no hacemos nuevo select)
Image
Aplicamos un filtro "CliCod>5"
Image

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.

Posted: Fri Jun 06, 2008 4:01 pm
by Armando
Biel:

Ahora sí quedó bastante claro, hasta yo lo entendí :lol:

Saludos y gracias tambien a Adolfo.