Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   buscar un campo (https://www.clubdelphi.com/foros/showthread.php?t=5363)

acrophet 19-11-2003 13:57:48

buscar un campo
 
Imaginemos: tengo una tabla que la visualizo con un dbgrid. Cada vez que hago click encima de cada registro, me guardo el valor del campo 'ID' en una variable.
Pues bien, como puedo hacer para que en otro momento dado que a mi me interese, se posicione el puntero del dbgrid en el registro al cual corresponde el id que tenia yo guardado???
No se si me he explicado con claridad, sino, decidmelo e intentare aclarar la cosa.
Un saludo.

Osorio 19-11-2003 14:36:17

La ubicacion del resgistro activo de un DBGrid es la misma del registro activo de su conjunto de datos (tabla o consulta).


Lo que puedes hacer es un locate sobre la tabla que tienes asociada con tu DBGrid.

Algo asi:


Tabla.locate('campoclave',variabe,[]);



Espero haber entendido bien tu pregunta....


Suerte...

delphi.com.ar 19-11-2003 14:59:21

Una sugerencia: Si bien lo expuesto por Osorio es correcto, quiero sugerirte que en lugar de guardar el valor del campo ID del registro, guardes el Bookmark del mismo (a no ser que por otro motivo necesites del ID). La ventaja de guardar el Bookmark es que el acceso es mucho mas rápido, ya que no tiene ninguna necesidad de realizar una búsqueda en los datos de la consulta. La ventaja de guardar un ID, es que si cambiamos el set de resultados, aún podemos ubicar el registro por su clave primaria.

Código:

type
  TForm1 = class(TForm)
    ...
  private
    SBookMark: string;
  end;

implementation

procedure TForm1.btnGuardarPosicionClick(Sender: TObject);
begin
  SBookMark := Query1.Bookmark;
end;

procedure TForm1.btnIrAlBookmarkClick(Sender: TObject);
begin
  Query1.GotoBookmark(Pointer(SBookMark));
end;

Saludos!

acrophet 19-11-2003 17:03:35

Gracias Osorio, tu respuesta ha sido 100% lo que queria hacer.
Un saludo.


La franja horaria es GMT +2. Ahora son las 08:29:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi