Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Meu problema é o seguinte, salvo o xml da nota e do protocolo no banco de dados. Na virada do mês , quando o cliente quer salvar o xml de todas as notas para enviar para o contador, ele marca todas e clica no botão salvar. Nesse momento carrego os xml das notas selecionadas para o componente acbbrnfe e salvo. Só que o processo fica tão lento que o cliente acha que o sistema travou. Alguma sugestão de como resolver?

Segue o procedimento utilizado:

procedure TDMNFe_ent.SalvarXML;

function StringToStream(const ANFe, ANFeProt: WideString): TStringStream;

var

vXml: WideString;

begin

if ANFeProt <> '' then

begin

vXml := '<?xml version="1.0" encoding="UTF-8" ?>'+

''+

ANFe+

''+

ANFeProt+

''+

'';

end

else

begin

vXml := ANFe;

end;

Result := TStringStream.Create(vXml);

end;

var

vXML, vXMLProt: WideString;

vDir: String;

begin

cdNotasFiscais.DisableControls;

DMNFe.ACBrNFe1.NotasFiscais.Clear;

FChecado.Clear;

try

try

cdNotasFiscais.First;

while not(cdNotasFiscais.Eof) do

begin

if cdNotasFiscais.FieldByName('NFE_SITUACAO').AsString = 'Autorizada' then

begin

if cdNotasFiscais.FieldByName('CHECK').AsBoolean then

begin

vXML := LoadXML(cdNotasFiscais.FieldByName('NFE_XML_ID').AsInteger);

vXMLProt := LoadXML(cdNotasFiscais.FieldByName('NFE_PROT_ID').AsInteger);

DMNFe.ACBrNFe1.NotasFiscais.LoadFromStream(StringToStream(vXML, vXMLProt));

FChecado.Add(cdNotasFiscais.FieldByName('NUMNOTA').AsString);

end;

end;

cdNotasFiscais.Next;

end;

if not(DMNFe.ACBrNFe1.NotasFiscais.Count = 0) then

begin

if not(SelectDirectory('Selecionar Diretorio', 'C:\', vDir)) then

exit;

DMNFe.ACBrNFe1.Configuracoes.Geral.PathSalvar:=vDir;

DMNFe.ACBrNFe1.NotasFiscais.SaveToFile();

cdNotasFiscais.Refresh;

end;

except

on E: Exception do

begin

MessageDlg('Erro Salvar XML em arquivo Nota '+cdNotasFiscais.FieldByName('NUMNOTA').AsString+sLineBreak+

'Original: '+E.Message , mtError,[mbOk], 0);

end;

end;

finally

cdNotasFiscais.EnableControls;

end;

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.