PDA

Ver la Versión Completa : Búsquedas en un Query


Pedro-Juan
07-10-2006, 13:23:59
Hola a todo/as

Cómo hacer búsquedas en un Query, por ejemplo con FindNearest(), como en una Table?
Imaginaros una consulta cuyo resultado es muy grande, por ejemplo los clientes de una ciudad con 600, 700 o más registros de resultado de la consulta. Dentro de esa consulta, de los clientes de esa ciudad, queres buscar uno al modo de FindNearest(), Cómo hacerlo?


FormMain.Edit1.OnChange(Sender);
var cTexto: String;
begin
cTexto := FormMain.Edit1.Text;
//Esto funciona, se posiciona en el más cercano a medida que se plusan teclas
if FormMain.DbGrid1.DataSource = DataSourceTable1 then Table1.FindNearest([cTexto]);

//Pero esto no:
if FormMain.DbGrid1.DataSource = DataSourceQuery1 then Query1.FindNearest([cTexto]);
end;


Para el Query da un error de undeclared identifier
Locate sí funcioma con Query, pero no es eso lo que quiero, quiero que se posicione a medida que se pulsan teclas.

Muchas gracias a todos/as, ahora funciona con esto


//...
uses db;
//...
if FormMain.DbGrid1.DataSource = DataSourceQuery1 then
with Query1 do Locate('cCampo', cTexto, [loCaseInsensitive, loPartialKey]);

ilichhernandez
07-10-2006, 17:14:01
Revisa ente enlace...
http://www.latiumsoftware.com/es/pascal/0007.php, es bastante explicativo.

Pedro-Juan
07-10-2006, 17:52:13
Muchas gracias, pero y con un TQuery?, no lo he visto en el enlace que me has enviado

vtdeleon
07-10-2006, 20:10:40
por ejemplo con FindNearest(), como en una Table?Si, es lo mismono lo he visto en el enlace que me has enviadoSi no te ayudas, quien lo va a hacer por ti?

Lepe
07-10-2006, 21:58:39
La linea en rojo nunca entrará:

Hola a todo/as

Cómo hacer búsquedas en un Query, por ejemplo con FindNearest(), como en una Table?
Imaginaros una consulta cuyo resultado es muy grande, por ejemplo los clientes de una ciudad con 600, 700 o más registros de resultado de la consulta. Dentro de esa consulta, de los clientes de esa ciudad, queres buscar uno al modo de FindNearest(), Cómo hacerlo?

FormMain.Edit1.OnChange(Sender);
var cTexto: String;
begin
cTexto := FormMain.Edit1.Text;
//Esto funciona, se posiciona en el más cercano a medida que se plusan teclas
if FormMain.DbGrid1.DataSource = Table1 then Table1.FindNearest([cTexto]);

//Pero esto no:
if FormMain.DbGrid1.DataSource = Query1 then Query1.FindNearest([cTexto]);
end;
//Para el Query da un error de undeclared identifier

Locate sí funcioma con Query, pero no es eso lo que quiero, quiero que se posicione a medida que se pulsan teclas.

Muchas gracias y un saludo

Porque estas comparando un TDatasource con un TDataset,
la línea correcta sería:

if FormMain.DbGrid1.DataSource.Dataset = Query1 then


Lo normal es conectar la tabla a un TDataSource, y despues el Grid al TDatasource. Si se hace de otras formas, hay que tener cuidado.

PD: Por favor, encierra el código entre

[ delphi ]
aqui vuestro codigo
[ /delphi ]

(sin espacios dentro de los corchetes) Así consigues que respete el identado y aparezca las palabras reservadas en negrita y colores.


procedure Saludos();
begin
ShowMessage(' Un saludo y hasta luego');
end;

Pedro-Juan
08-10-2006, 16:19:32
La linea en rojo nunca entrará:



Porque estas comparando un TDatasource con un TDataset,
la línea correcta sería:

Código Delphi [-] (http://www.clubdelphi.com/foros/#)
if FormMain.DbGrid1.DataSource.Dataset = Query1 then





Lo normal es conectar la tabla a un TDataSource, y despues el Grid al TDatasource. Si se hace de otras formas, hay que tener cuidado.

PD: Por favor, encierra el código entre

[ delphi ]
aqui vuestro codigo
[ /delphi ]

(sin espacios dentro de los corchetes) Así consigues que respete el identado y aparezca las palabras reservadas en negrita y colores.


Código Delphi [-] (http://www.clubdelphi.com/foros/#)
procedure Saludos();
begin
ShowMessage(' Un saludo y hasta luego');
end;





Hola y gracias por responder.

No hay error en el código original, solo aquí, en el mensaje.
La cuestión es si FindNearest() funciona en un TQuery como lo hace en TTable.
El error es de compilación (undeclarer identifier), por lo que no reconoce FindNearest() cuando va acompañando a un TQuery.
Lo que busco es un metodo que sí funcione con TQuery.

Gracias.