Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Buscar siguiente SQL (https://www.clubdelphi.com/foros/showthread.php?t=54255)

paladincubano 12-03-2008 18:54:23

Buscar siguiente SQL
 
Hola, tengo un boton en una aplicacion al lado de un texedit, que me busca un registro en la base de datos con el criterio expuesto en el texedit, para ello utilizo la funcion LOCATE, de momento me lo hace muy bien, ahora lo que quiero es adicionar un boton para buscar el siguiente registro que cumpla el criterio, porque cuando le vuelvo a dar al boton me encuentra el mismo. Osea, hay alguna funcion o algo para buscar al siguiente registro en la lista que cumpla el criterio???
gracias

PD: Utilizo el SQL server.

eduarcol 12-03-2008 19:06:59

Si me aceptas una sugerencia creo que estas subutilizando recursos, si trabajas con un manejador de base de datos relacional pero trabajas como sifuera local, esto lo digo debido a que expones que trabajas con Locate, esto quiere decir que tienes que cargar todos los registros de la tabla para que funcione, lo que yo te propongo sera algo como esto:


Para la primera consulta
Código Delphi [-]
sq.SQL.Active := False;
   sq.SQL.Text := 'Select * from tabla where codigo = ' + QuotedStr(Edit1.Text);
sq.SQL.Active := True;
sq.First;

y para el boton siguiente solo deberias hacer esto:
Código Delphi [-]
if sq.Eof then ShowMessage('Ha llegado al final')
else  sq.Next;

paladincubano 12-03-2008 19:39:45

Si, yo habia pensado en eso, pero al final eso es como un filtro.
El problema es que yo no pongo todos los clientes en una tabla, si no algo asi:
Simulo la forma:
Barra de herramientas:
|<<|< | >| >> | Refrescar| Nuevo| Post| Cancel| <-vamos no es mas que un DBNavigator mio customizado

Los datos se muestran con Label y edits para poder modificar ejemplo:

Nombre: |fulanito|.
Apellidos: |ciclanito|
...
...

No quiero usar un Grid
Arriba en la barra de herramientas hay el famoso edit de buscar que cuando termina de escribir el criterio y das enter te hace el locate.
Por eso no quiero filtrar porque quienes trabajaran con eso son poco informaticos y si filtran luego no le "aparecen" los demas clientes. Por eso lo de la busqueda siguiente hasta que den con el que quieren.
Entiendes?
Gracias de todas formas.

paladincubano 12-03-2008 19:46:21

Aqui os dejo una imagen de como es la cosa:

http://img443.imageshack.us/my.php?image=pantazw1.jpg

Ivanzinho 12-03-2008 20:06:34

Cita:

Empezado por paladincubano
.
Por eso no quiero filtrar porque quienes trabajaran con eso son poco informaticos y si filtran luego no le "aparecen" los demas clientes. Por eso lo de la busqueda siguiente hasta que den con el que quieren.
Entiendes?
Gracias de todas formas.

Creo que no has entendido bien lo que te ha dicho eduarcol, ya que el usuario no notaría la diferencia entre tu método y lo que él propone. La única diferencia sería la mejora de rendimiento.

Lo que tienes que hacer es seleccionar solamente los clientes que necesites de la base de datos, y luego te olvidas del locate haciendo un simple next, puesto que todos lo registros del dataset cumplen la condición del filtrado. Cuando el usuario encuentre el que quiera lo edita y punto, igual que hace lo que tu propones pero con un menor tráfico de red y sin tener que localizar los registros de cada vez.

Un saúdo.


La franja horaria es GMT +2. Ahora son las 21:05:37.

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