Gerar CSV com Cabeçalho+Detalhes em Arquivos de Trabalho Diferentes

Boa tarde, pessoal.

Estou com uma dúvida que creio ter uma solução simples, mas não consigo resolver.

Preciso gerar um CSV com informações de notas ficais, parecido com o exemplo abaixo:

Produto XYZ, 2 Movimentações
NF 001 do XYZ
NF 002 do XYZ
Produto ABC, 1 Movimentação
NF 001 do ABC

Pra gerar o arquivo, defini dois arquivos de trabalho: um para o cabeçalho com um contador e outro com os itens. Conforme os itens são lidos e validados, eu incremento o contador do arquivo de trabalho do cabeçalho.

Minha dúvida é de como "juntar" esses dois arquivos de trabalho assim como no exemplo acima.

Pensei em usar arrays auxiliares e também em abrir os dois arquivos de trabalho ao mesmo tempo. Entretanto, isso gera um loop dentro de um loop, já que para cada linha do cabeçalho eu teria de ler todos os itens (parecido com o exemplo abaixo). Isso é inviável, pois há casos em que preciso ler registros desde 2017:

dbSelectArea (cabecalho)
dbGoTop()

while !Eof()
   dbseek(cabecalho)
   escreveCabecalho
   dbSelectArea (itens)
   se (produtocabecalho = produtoitem)
      escreveItem
   dbskip()
   dbCloseArea

Se alguém tiver alguma estratégia ou algum exemplo de como solucionou um problema parecido, agradeço se postar.

Precisando de alguma informação extra, é só perguntar.

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags bancodedados csv advpl ou faça a sua própria pergunta.