Fórum Adicionar campo em execução ao ClientDataSet #328532

03/09/2006

0

como faço para adicinar um campo em tempo de execução a um clientdataset que tb é criado em tempo de execução?


Raserafim

Raserafim

Responder

Posts

04/09/2006

Catunda

O código abaixo mostra a criação de campos em uma clientdataset (CDS_Tmp), localizado dentro de um data module (DM1), em tempo de execução. Espero que lhe ajude.

var
campos: TField;
begin
With DM1 do
begin
CDS_Tmp.Close;
CDS_Tmp.Fields.Clear;
CDS_Tmp.FieldDefs.Clear;

campos:=TIntegerField.Create(Self);
campos.FieldName:=´codigo´;
campos.Name:=CDS_Tmp.Name+campos.FieldName;
campos.Index:=CDS_Tmp.FieldCount;
campos.DataSet:=CDS_Tmp;
campos.DisplayLabel:=´codigo´;

campos:=TStringField.Create(Self);
campos.FieldName:=´descricao´;
campos.Name:=CDS_Tmp.Name+campos.FieldName;
campos.Index:=CDS_Tmp.FieldCount;
campos.size:=30;
campos.DataSet:=CDS_Tmp;
campos.DisplayLabel:=´descricao´;


CDS_Tmp.CreateDataSet;

CDS_Tmp.Open;
end;


Responder

Gostei + 0

06/09/2006

Raserafim

valeu cantuna,

mas acabei utilizando uma outra solução que encontrei aqui mesmo no fórum.

  CDStmp := TClientDataSet.Create(nil);
  with CDStmp do
  begin
    with FieldDefs.AddFieldDef do
    begin
      DataType := ftInteger;
      Name := ´PRAZO_MEDIO´;
    end;
    CreateDataSet;
  end;



já que o clientdataset não está pegando dados de uma tabela, então acho que serviu bem.
mas a sua sugestão, se fosse para pegar dados de uma tabela, realmente seria a ideal.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar