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)
-   -   ClientDataset - Locatenext (https://www.clubdelphi.com/foros/showthread.php?t=57489)

StartKill 17-06-2008 15:46:52

ClientDataset - Locatenext
 
Saludos desde Perú, tierra de Incas.

Estoy trabajando con Delphi 2006 con una base de Datos SQLServer 2000, tengo algo de experiencia en Interbase y Delphi 7.0

Cuando trabajaba con Interbase/Firebird he estado utilizando IBDataSet y en este componente utilizaba el metodo Locate y LocateNext.

Ahora que estoy trabajando con SQL Server 2000 estoy trabajando con DBExpress, a si mismo utilizo el ClientDataSet y no encuentro el metodo LocateNext

Duda: No existe?, por que?, o hay algun equivalente?.

A la espera de su ayuda.

Your friend,

StartKill
Lima-Perú

santus 17-06-2008 18:48:42

Holas.

Si lo que quieres es filtrar una serie de registros, deberías usar "ClientDataset.filter".

Aquí tienes la explicación completa de como funciona.


Saludos!

hibero 17-06-2008 19:07:53

puedes cambiar el commandtext
 
puedes cambiar el commandtext del clientDataset para traerte solo los registros que necesitas

StartKill 17-06-2008 23:01:39

Holas, gracias por responder, no deseo filtrar registros. (pero me va a servir para otro requerimiento)

Mi requerimiento:

Tengo una grilla maximo unos 100 registros..
Para buscar dentro de la grilla utilizo un edit y dos botones.

El primer boton ubica la primera coincidencia dela busqueda del tedit1
****ClientDataset1.Locate('fapellidos', 'Ramirez',[loPartialKey]);

El segundo boton deberia buscar la siguientes coincidencias, antes utilizaba el componente ibDataset, asi:
****IBDataset1.LocateNEXT('fapellidos', 'Ramirez',[loPartialKey]);
Saludos

Your friend

StartKill
Lima-Perú

santus 18-06-2008 03:19:20

Hola.

No se me ocurre cómo podrías sustituir el locateNEXT.. Viendo en internet tampoco hay muchas ideas al respecto. Nunca use componentes de InterBase, asi que tampoco te podría decir que resultado.

Capaz que haciendo una busqueda uno a uno, podrias suplantar el locateNext, aunque seria algo medio "horrible" a nivel código y en cuanto a la performance.

En el botón 2, luego de hacer el locate, escribe el siguiente código:

Código Delphi [-]
while not clientdataset1.eof do
begin
  if (clientdataset1.fieldbyname('fapellidos').value = 'Ramirez') then exit;
  next;
end;


Sino insisto con el filter. Creo que sería los mas facil y conveniente:

En el botón 1:
Código Delphi [-]
ClientDataset1.Filter := 'fapellidos='+QuotedStr('Ramirez');
ClientDataset1.Filtered := True;

y en el botón 2:
Código Delphi [-]
ClientDataset1.FindNext;

y luego para sacar el filtro:
Código Delphi [-]
ClientDataset1.Filtered := False;

La verdad que otra solución no se me ocurre. Si ninguna de estas te sirve, esperemos a ver si algún otro usuario se le ocurre algo mas acertado.

Saludos, y espero haberte sido de ayuda.

StartKill 18-06-2008 04:02:32

Gracias Santus, voly a seguir la recomendacion de susplantar el locatenext,
por un momento pense que mi Delphi 2006 estaba mal ó que tenia que aplicarle un parche...

Gracias a todos.

Saludos

StartKill
Lima-Perú


La franja horaria es GMT +2. Ahora son las 02:28:33.

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