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)
-   -   ¿ Limit en TZTable de los Zeos ? (https://www.clubdelphi.com/foros/showthread.php?t=35579)

against 14-09-2006 17:55:04

¿ Limit en TZTable de los Zeos ?
 
Bueno creo que la pregunta es fácil, yo no la he encontrado la manera.

Bueno el tema es que tengo una aplicación hecha y me supone mucho tiempo el cambiar todos los tztable por tzquery y busca alguna manera sin usar el filter de la tztable y usar los LIMIT de SQL.

Me gustaría poder pues usar el limit indicando el numero de registros que quiero desde que posición, vamos como funciona el limit en SQL.

Estoy usando los Tztable de ZEOS.

El porque de usar los limit es porque actualmente abro algunas tablas con muchos registros y ralentiza el programa, además que es absurdo el mostrar miles de registros a la vez.

PD: Uso MYSQL.

roman 14-09-2006 18:38:01

Bueno, en algún momento tendrás que cambiar tus ZTable por ZQuery por el solo hecho de que en aplicaciones C/S realmente ya no debe trabajarse con tablas como no sean pequeños catálogos.

Pero tú necesitas una solución ahora y quizá la encontremos. Todas las clases TZTable, TZQuery y TZReadOnlyQuery derivan de la clase TZAbstractRODataset que introduce la propiedad SQL que es la que almacena la sentencia sql.

TZTable en particular, establece esa sentencia con un

Código SQL [-]
select * from tabla

y, de hecho lo hace así, en el método SetTableName:

Código Delphi [-]
if FTableName <> Value then
begin
  FTableName := Value;
  if Value <> '' then
    SQL.Text := Format('SELECT * FROM %s', [FTableName])
  else SQL.Text := '';
end;

Y esto es una maravilla :) ¡El código no hace ninguna validación para determinar si lo que se asigna a la propiedad TableName es realmente el nombre de una tabla!

Entonces, así como escribes:

Código Delphi [-]
ZTable1.TableName := 'clientes';

Nada impide escribir:

Código Delphi [-]
ZTable1.TableName := 'clientes limit 50';

Al hacerse la sustitución en la función Format, quedará

Código SQL [-]
SELECT * FROM clientes limit 50

y voilà :)

Incluso puedes colocar ese valor (clientes limit 50) en el inspector de objetos y activar la tabla durante el diseño. :)

// Saludos

against 26-09-2006 16:36:24

Muchas gracias por la ayuda :)


La franja horaria es GMT +2. Ahora son las 18:56:11.

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