Ver Mensaje Individual
  #1  
Antiguo 03-04-2009
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Reputación: 19
MaMu Va por buen camino
Agregar Campo Calculado en Runtime - (Avanzado)

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.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita