Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1652 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
4 minutos atrás, José Vitor B. Gomes disse:

          ACBrSAT1.CFe.LoadFromFile(OpenDialog1.FileName);

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.

9 minutos atrás, José Vitor B. Gomes disse:

      while a <= OpenDialog1.Files.Count do

 

  • 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 SAC ACBr

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á 1652 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.