Ver Mensaje Individual
  #2  
Antiguo 14-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita