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
Curtir tópico
+ 0
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;
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.
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.
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
Clique aqui para fazer login e interagir na Comunidade :)