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)
-   -   limitar resultados en base de datos sqlite3 (https://www.clubdelphi.com/foros/showthread.php?t=84545)

juank1971 01-11-2013 16:13:46

limitar resultados en base de datos sqlite3
 
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

ecfisa 01-11-2013 17:24:12

Cita:

Empezado por juank1971 (Mensaje 469192)
...
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.
...

Hola juank1971.

No he usado SQL Lite, pero revisa si no te sirven las cláusulas LIMIT y OFFSET, enviando el valor correspondiente a OFFSET como parámetro.

Saludos :)

juank1971 01-11-2013 22:27:33

ok
 
correcto gracias creo que con eso resulevo.


La franja horaria es GMT +2. Ahora son las 09:06:30.

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