Hola amigos
Teno un problema , teno muchos registros en una consulta muy grande, la base de datos es de miles de registros sqlite3
la consulta que muestro mas adelante que me busca en el campo nombre de una tabla un texto o en el campo contenido de otra , eso lo tengo puesto en delphi xe4 con dbexpress, y con TclientDataset. Una buenisima mezcla a mi criterio. TsqlConnection-Tsqlquery-TdataSetProvider-TClientDataset-TDataSource.
Al TclientDataset le tengo puesto en la propiedad packedRecord 20 y funciona me muestra solo los 20 primeros luego cuando bajo un poco el scroll me muestra otros 20 registros, eso funciona bien, lo que se me demora un poco para hacer la consulta al principio, o sea la demora es en hacer la consulta y darme los primeros 20, luego de eso el delphi se encarga correctamente de mostrame como debe ser de 20 en 20 y funciona bien.
esta es la consulta que hago :
select * from nombres where ( nombre like '%Transistor PNP%' ) or ( id_fichero in (select id_fichero from ficheros where contenido like '%Transistor PNP%'));
Código Delphi
[-]
sql := ' select * from nombres ' + ' where ( nombre like ' + '''' + '%' +
trim(eBuscar.Text) + '%' + '''' + ')' + ' or ( id_fichero in ' +
' ( select id_fichero ' + ' from ficheros ' + ' where contenido like ' +
'''' + '%' + trim(eBuscar.Text) + '%' + '''' + ' ));';
with DataModule1.cdsNombres do
begin
Close;
CommandText := sql;
try
Open;
except
end;
end;
Necesito una manera de hacer las consultas digamos con limit 100 o algo de eso, en sql y marcar de alguna manera ese ultimo registro y si el usuario no encuentra que que quiere en esos
primeros 100 mandar a ajecutrar la misma consulta pero sumando los siguientes 100, o sea quisiera algo parecido al packedrecord pero en sql, para poder obtener los primeros resolatados mas rápido.
Gracias y salud y pesetas para todos.
juank