Ler dados de um DataSetField em tempo de execução

Delphi

19/11/2010

Pessoal,   Preciso ler as informações de um campo TDataSetField de um ClientDataSet. O ClientDataSet está sendo criado em tempo de execução lendo mapa de um XMLTransformProvider.   Alguém sabe se tem como fazer (e principalmente como fazer)  a leitura dos dados desse campo? Ou como identificá-lo para colocá-lo como o DataSetField de um segundo ClientDataSet.            
Arlei Palharini

Arlei Palharini

Curtidas 0

Respostas

Pietro Braga

Pietro Braga

19/11/2010

Para saber quais campos contém o ClientDataSet pode ser assim:
cds.GetFieldNames(QualquerComboBox.Items) oucds.GetFieldNames(QualquerMemo.Lines).
Para obter os dados:
cds.FieldByName('Campo').Value.asString ou .asInteger...
Para colocar como DatasetField em outro CDS:
OutroCDS.DataSetField:= cds.FieldByName('CAMPO');
Espero ter ajudado.
GOSTEI 0
Arlei Palharini

Arlei Palharini

19/11/2010

Olá Pietro,     A rotina para obter os nomes, funciona sem problemas.     Mas cds.FieldByName('Campo').Value.asString, retorna como campo inexistente quando informo algum campo do DataSetField. Funciona Ok com campos do próprio cds.     A rotina OutroCDS.DataSetField:= cds.FieldByName('CAMPO');  retorna erro de tipos diferentes na compilação.   [DCC Error] USae601.pas(694): E2010 Incompatible types: 'TDataSetField' and 'TField'     Vou fazer mais um teste: Criar também todos os campos do cds gerado pelo XMLTransform em tempo de execução. Depois posto o resultado.   Abs    
GOSTEI 0
Pietro Braga

Pietro Braga

19/11/2010

O segundo comando serve para você obter os dados dos campo0s do cds1.
Tente assim para o DataSetField:
OutroCDS.DataSetField:= TDataSetField(cds1.FieldByName('CAMPO'))
GOSTEI 0
Arlei Palharini

Arlei Palharini

19/11/2010

Obrigado Pietro!!   Funcionou 100%     Abs
GOSTEI 0
POSTAR