Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1784 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom dia,

Estou com um problema para ler arquivos XML com a função ACBrSAT1.CFe.LoadFromFile, fiz uma estrutura para selecionar múltiplos arquivos XML e um laço que passa pelos itens e quando finaliza, volta para o início e pula para o próximo arquivo XML. O que acontece atualmente quando executo o código.

Ex: Seleciono 3 XML's, a estrutura lê todos os itens do primeiro, mas não passa para o próximo arquivo, faz o mesmo processo 3x (Número do count de arquivos selecionados).

Código: 

 if (OpenDialog1.Execute) then
    begin
      SOMA5405 := 0.0;
      SOMA5102 := 0.0;
      SOMA5101 := 0.0;
      while a <= OpenDialog1.Files.Count do
        begin

          v := 0;
          i := 0;

          ACBrSAT1.CFe.LoadFromFile(OpenDialog1.FileName);

          ShowMessage('quant itens ' + IntToStr(ACBrSAT1.CFe.Det.Count) );

          while i < ACBrSAT1.CFe.Det.Count  do
            begin
              edtN_CFE.Text  := IntToStr(ACBrSAT1.CFe.ide.nCFe);
              edt_CLIENTE.Text := ACBrSAT1.CFE.Emit.xNome;
              //edtN_ITEM.Text := IntToStr(ACBrSAT1.CFe.DeT.Items[v].nItem);
              //edtNOME_PROD.Text := ACBrSAT1.CFe.Det.Items[v].Prod.xProd;
              //edtCFOP.Text := ACBrSAT1.CFE.Det.Items[v].Prod.CFOP;
              //edtV_ITEM.Text := FloatToStr(ACBrSAT1.CFe.Det.Items[v].Prod.vItem);

              if Pos(CFOP5405, ACBrSAT1.CFe.Det.Items.Prod.CFOP)<> 0 then
                begin
                  SOMA5405 := SOMA5405 + ACBrSAT1.CFe.Det.Items.Prod.vItem;
                end;
              if Pos(CFOP5102, ACBrSAT1.CFe.Det.Items.Prod.CFOP)<> 0 then
                begin
                  SOMA5102 := SOMA5102 + ACBrSAT1.CFe.Det.Items.Prod.vItem;
                end;
              if Pos(CFOP5101, ACBrSAT1.CFe.Det.Items.Prod.CFOP)<> 0 then
                begin
                  SOMA5101 := SOMA5101 + ACBrSAT1.CFe.Det.Items.Prod.vItem;
                end;
                
              i := i+1;
            end;

          edt_SOMA5405.text := FloatToStr(SOMA5405);
          edt_SOMA5102.text := FloatToStr(SOMA5102);
          edt_SOMA5101.text := FloatToStr(SOMA5101);
          SOMATOTAL := (SOMA5405) + (SOMA5102) + (SOMA5101);
          edt_SOMATOTAL.text := FloatToStr(SOMATOTAL);
          a := a+1;
        end;
    end;
end;

  • Moderadores
Postado
  Em 22/05/2020 at 13:09, José Vitor B. Gomes disse:

          ACBrSAT1.CFe.LoadFromFile(OpenDialog1.FileName);

Expandir  

Aqui sempre vai ler o mesmo arquivo.

Use:

          ACBrSAT1.CFe.LoadFromFile(OpenDialog1.Files[a]);

A linha abaixo também vai te gerar um erro de index out of bounds.

  Em 22/05/2020 at 13:09, José Vitor B. Gomes disse:

      while a <= OpenDialog1.Files.Count do

Expandir  

 

  • Curtir 2
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado (editado)

Deu certo, valeu!!

Sim, deu erro, corrigi iniciando a variável a em 0 e mudando a condição while a <= OpenDialog1.Files.Count do para while a < OpenDialog1.Files.Count do

Editado por José Vitor B. Gomes
  • Administradores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultora ACBr Pro

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 1784 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...