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)
-   -   Situar busqueda primer lugar dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=72793)

Tonio 11-03-2011 21:55:14

Situar busqueda primer lugar dbgrid
 
Utilizo Delphi 6. Deseo que al hacer una búsqueda, el campo buscado aparezca en primer lugar del dbgrid. Ahora aparece en el centro.
Puedo hacer que el campo se coloque en el primer lugar, porque la búsqueda incluye numeros, aumento un número determinado, siempre el mismo y va allí, pero el indicador se queda en esa posición. ¿Se puede llevar al primer lugar? esto también me resolvería el problema
No se si se podrá. De todas formas gracias de antemano.
Un saludo.
Tonio

Casimiro Notevi 11-03-2011 22:05:39

Todo depende de los datos que tienes y de la consulta que haces, si no das más datos... difícil contestarte será ;)

oscarac 14-03-2011 05:28:02

pues... lo que quiere decir no he entendido muy bien !!:o

ctrl_attack 14-03-2011 07:50:47

tratando de adivinar tu consulta supongo que tienes un form, con un edit para escribir el texto buscado y un dbgrid para mostrar el resultado que coincida con tu busqueda, lo que no endiento es como haces para hacer consulta, pero bueno te pongo algo que yo uso para busqueda recursiva utilizando componentes ado y acces, que hasta la fecha me funcina muy bien.

Código Delphi [-]
adoQuery1.Close;
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add('Select * '
  +'From Tabla WHERE (Campo) LIKE (' + QuotedStr('%' + Edit1.Text + '%') + ') ');
        adoQuery1.Open;

Este codigo en el evento onchange del edit, y me muestra solo los registros que coincidan con la busqueda, saludos.

Tonio 16-03-2011 18:26:26

Situar busqueda primer lugar dbgrid
 
Pido disculpas, yo lo veía tan fácil..., lo que quería claro.

El DBgrid me muestra 30 de los registros de una tabla Paradox, al hacer una búsqueda con Findkey, lo encuentra y me lo señala en el DBGrid, pero, exceptuando si el registro buscado es de los primeros, ese registro 'encontrado' siempre aparece en el puesto 15, y yo quisiera que apareciera en primer lugar, dentro del DBgrid por supuesto.
No se si ahora...
Pido disculpas nuevamente, cuando he vuelto a leer el post he pensado que teneis mucha paciencia.
Gracias.
Tonio.

gluglu 16-03-2011 20:26:19

Hola !

Es un problema del propio DBGrid que no te permite elegir el registro que debe de colocar en la primera fila 'visible'.

Seguro que hay modos más eficientes pero supongo que bastante más complejos, pero se me ocurre uno fácil, o al menos, menos complicado que los demás :

Si sabes el número de filas de tu DBGrid (las que se muestran en pantalla), una vez que localices el registro basta que hagas un avance de registros igual que el número de filas que tienen el DBGrid en pantalla, y después vuelvas a retroceder ese número de registros de nuevo. De esta manera, tu registro se coloca en la primera fila 'visible' al avanzar el número de registros igual al número de filas, y después vuelves a posicionar la barra de selección retrocediendo el mismo número de registros.

La cosa se complica un poco cuando avanzando o retrocediendo te encuentras con el EOF o BOF de tu selección. Hay que complicar un poco el proceso detectando el EOF o BOF respectivamente.

gluglu 16-03-2011 20:30:31

Añado : Realmente la idea es esa, pero como tu indicas, si tienes 30 filas se posiciona en la fila 15, por lo que tampoco te soluciona exactamente lo que he puesto anteriormente.

En el evento OnDrawColumnCell del DBGrid puedes averiguar la posición dentro del DBGrid del registro que está seleccionado. Sería realizar el cálculo oportuno para saber el número de filas que te quedan por debajo del registro seleccionado, avanzar esas posiciones + número de filas del DBGrid, y retroceder número de filas del DBGrid.

:rolleyes:

A lo mejor a alguien se le ocurre algo mejor ....


La franja horaria es GMT +2. Ahora son las 13:44:35.

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