Boa tarde, estou usando o FDBatchMoveDataSetReader1 para pegar os dados de uma query e usando o FDBatchMove1 para pegar os dados e jogar num FDBatchMoveSQLWriter1 para gravar os dados em outro lugar.... o sql que retorna na query é dinamico e nem todos os campos que tem nele, terá na tabela de destino, então o que preciso é criar os mappings do FDBatchMove1 de origem e destino dinamicamente, estou fazendo assim;
with FDQuery1 do
begin
Active := false;
Close;
sql.Clear;
sql.add('select * from tbl_adm_configsynccampos where nm_tabelapara = ''tbl_prd_produtos'' ');
open;
end;
while not FDQuery1.Eof do
begin
with BatchMove.Mappings do
begin
Add.SourceFieldName := FDQuery1.FieldByName('nm_campode').AsString;
Add.DestinationFieldName := FDQuery1.FieldByName('nm_campopara').AsString;
end;
FDQuery1.Next;
end;
Ele está adicionando, mas está criando um item de mapping de origem e outro item de destino e não no mesmo item incluindo o destino e origem, coloquei manualmente para ver o objeto e ele deu assim;
object BatchMove: TFDBatchMove
Reader = Reader
Mappings = <
item
SourceFieldName = 'origem'
DestinationFieldName = 'destino'
end
item
SourceFieldName = 'de'
DestinationFieldName = 'para'
end>
LogFileName = 'Data.log'
Analyze = [taFormatSet, taHeader, taFields]
Left = 232
Top = 344
end
Pergunta
robinhocne
Boa tarde, estou usando o FDBatchMoveDataSetReader1 para pegar os dados de uma query e usando o FDBatchMove1 para pegar os dados e jogar num FDBatchMoveSQLWriter1 para gravar os dados em outro lugar....
o sql que retorna na query é dinamico e nem todos os campos que tem nele, terá na tabela de destino, então o que preciso é criar os mappings do FDBatchMove1 de origem e destino dinamicamente, estou fazendo assim;
with FDQuery1 do begin Active := false; Close; sql.Clear; sql.add('select * from tbl_adm_configsynccampos where nm_tabelapara = ''tbl_prd_produtos'' '); open; end; while not FDQuery1.Eof do begin with BatchMove.Mappings do begin Add.SourceFieldName := FDQuery1.FieldByName('nm_campode').AsString; Add.DestinationFieldName := FDQuery1.FieldByName('nm_campopara').AsString; end; FDQuery1.Next; end;
Ele está adicionando, mas está criando um item de mapping de origem e outro item de destino e não no mesmo item incluindo o destino e origem, coloquei manualmente para ver o objeto e ele deu assim;
object BatchMove: TFDBatchMove Reader = Reader Mappings = < item SourceFieldName = 'origem' DestinationFieldName = 'destino' end item SourceFieldName = 'de' DestinationFieldName = 'para' end> LogFileName = 'Data.log' Analyze = [taFormatSet, taHeader, taFields] Left = 232 Top = 344 end
Como faço para incluir dinamicamente ?
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.