Ler dados de um DataSetField em tempo de execução
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
Curtidas 0
Respostas
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.
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
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
19/11/2010
O segundo comando serve para você obter os dados dos campo0s do cds1.
Tente assim para o DataSetField:
Tente assim para o DataSetField:
OutroCDS.DataSetField:= TDataSetField(cds1.FieldByName('CAMPO'))GOSTEI 0
Arlei Palharini
19/11/2010
Obrigado Pietro!!
Funcionou 100%
Abs
GOSTEI 0