Ver Mensaje Individual
  #2  
Antiguo 01-02-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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
   {Deshabilito controles para evitar refrescos inecesarios}
   DisableControls;
   {Bookmark suele ser la concatenacion de los campos PK (Primary Key)}
   Bookmark := FieldByName('EJERCICIO').AsString+'-'+FieldByName('NUMERO').AsString+'-'+FieldByName('LINEA').AsString;
   {Cierro y abro}
   Close;
   Open;
   {Mientras no encuentre el registro y no llegue al final de la tabla}
   while ( (Bookmark <> FieldByName('EJERCICIO').AsString+'-'+FieldByName('NUMERO').AsString+'-'+FieldByName('LINEA').AsString) and (not EOF)) ) do
      Next;
   {No hay que olvidarse de activar los controles}
   EnableControls;
end;

Última edición por duilioisola fecha: 01-02-2011 a las 14:43:17.
Responder Con Cita