Resulta que yo armo una grilla dinamicamente segun el tipo y nombre de un campo que tomo de la respectiva tabla, para tal fin he diseñado ciertas funciones y procedimientos, de modo tal de indicar simplemente un Query y un grilla, y asi armarlo automaticamente y despreocuparme del tema. Me funciona perfecto y de mil maravillas. El tema está que en un caso en particular de una grilla, debo añadir un campo calculado, puesto a que, necesito calcular un valor al momento de la consulta (es un calculo, si bien no complejo, no lo puedo hacer directamente en la consulta).
Asi relleno mi grilla
Código Delphi
[-]
procedure SQLToGrid(oQry : TZQuery; Grilla: TNxCustomGrid);
var Fields: Integer;
Campo: String;
begin
Grilla.Columns.Clear;
Grilla.Color := clWhite;
for Fields := 0 to oQry.FieldCount - 1 do
begin
Campo := oQry.Fields[Fields].DisplayName;
SetColumna(Grilla,GetTipoCampoSQL(oQry,Fields),
DeterminaNombreColumna(Campo),
DeterminaAnchoColumna(Campo),
true,
EsVisible(Campo));
end;
end;
El problema radica en que, si agrego los campos manualmente y luego el calculado, en la linea:
Código Delphi
[-]
for Fields := 0 to oQry.FieldCount - 1 do
me tira error de que esta fuera de rango, pues claro, recorre un campo de más pero este no existe en la tabla, sino que es un calculado en el componente.
Como puedo resolver esto? alguna idea, ocurrencia, sugerencia y o crítica, serán bienvenidas.
Desde ya, muchas gracias.