Fórum Campo calculado - Aparece apanas o declarado ??? #344910
23/08/2007
0
Amigos, fiz um campo calculado em runtime, até blz, porem quando abro a minha query tem apenas o mesmo, desaparecendo os demais, são +/- uns 10
A minha query os campos não são criados fixo, isto e apenas jogo a mesma lá e dependendo da tabela ela faz o serviço, utilizo o ibquery
fFloat := TFloatField.Create(Self); fFloat.FieldName := ´Calc´; fFloat.Name := ´calcaca´; fFloat.FieldKind := fkCalculated; fFloat.Alignment := taRightJustify; fFloat.DisplayWidth := 10; fFloat.DataSet := dmr.Itens_est; fFloat.Visible := true; fFloat.SetFieldType(ftFloat);
A minha query os campos não são criados fixo, isto e apenas jogo a mesma lá e dependendo da tabela ela faz o serviço, utilizo o ibquery
Sremulador
Curtir tópico
+ 0
Responder
Posts
23/08/2007
Luciano_f
Meu amigo faça o seguinte.
var
i: Integer;
vField: TField;
begin
CDS1.DisableControls;
if CDS1.Active then CDS1.Close;
CDS1.CommandText := ´Select * from tabela´;
CDS1.Fields.Clear;
CDS1.FieldDefs.Clear;
CDS1.FieldDefs.Update;
for i := 0 to CDS1.FieldDefs.Count - 1 do
if CDS1.FindField(CDS1.FieldDefs[i].Name) = nil then
CDS1.FieldDefs.Items[i].CreateField(CDS1);
// aqui voce pode criar quantos campos calculados quiser.
if Assigned(vField) then vField.Free;
vField := TIntegerField.Create(CDS1);
vField.Name := ´Result_ID´;
vField.FieldName := ´ID´;
vField.DisplayLabel := ´Linha´;
vField.Calculated := True;
vField.DataSet := CDS1;
vField.Index := 0;
CDS1.Open;
var
i: Integer;
vField: TField;
begin
CDS1.DisableControls;
if CDS1.Active then CDS1.Close;
CDS1.CommandText := ´Select * from tabela´;
CDS1.Fields.Clear;
CDS1.FieldDefs.Clear;
CDS1.FieldDefs.Update;
for i := 0 to CDS1.FieldDefs.Count - 1 do
if CDS1.FindField(CDS1.FieldDefs[i].Name) = nil then
CDS1.FieldDefs.Items[i].CreateField(CDS1);
// aqui voce pode criar quantos campos calculados quiser.
if Assigned(vField) then vField.Free;
vField := TIntegerField.Create(CDS1);
vField.Name := ´Result_ID´;
vField.FieldName := ´ID´;
vField.DisplayLabel := ´Linha´;
vField.Calculated := True;
vField.DataSet := CDS1;
vField.Index := 0;
CDS1.Open;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)