Erro ao usar XMLDataFile (do

Delphi

09/05/2011

Pessoas, bom dia.

Tenho uma rotina para importar arquivo XML. A rotina funciona assim. O usuário seleciona o arquivo XML a ser importados. Para essa importação utilizo um DBGrid, ligado um ClientDataSet e um XMLDataProvider. Dessa forma, eu consigo carregar as informações de um arquivo XML no DBGrid e salvar no banco de dados.

Porém (sempre tem um rsrs), isso é uma rotina diária e tem que ser importados em média 100 arquivos xml por dia. Resolvi automatizar, usando o FindFirst / FindNext, conforme código abaixo.

procedure Tfrm_principal.sb_importarquivoClick(Sender: TObject);
var
  ResultBusca : TSearchRec;
  i : Integer;
begin
  ChDir(Dir); // Posiciono o diretório selecionado para utilização do findfirst)
  cds_nfse.Active := True;
  i := FindFirst('*.xml', faAnyFile, ResultBusca);
  while i = 0 do
  begin
    edt_localizaarquivo.Text := Dir + '\' + ResultBusca.Name; // Mostra o caminho e nome do XML para importar
    xmltp_nfse.XMLDataFile := edt_localizaarquivo.Text;
    cds_nfse.Append;
    i := FindNext(ResultBusca);
  end;
end;

Mas ao executar, o sistema levanta um excepction, dizendo que o nome do arquivo XML tem que ser informado. Entretanto, nos testes que executei, na minha Edit (edt_localizaarquivo) o caminho do arquivo e nome do arquivo aparecem certinho, mas ele não lê nenhum arquivo. Alguém tem alguma dica?

---------------------------
Debugger Exception Notification
---------------------------
Project ANFSe.exe raised exception class TranslateException with message 'XMLDataFile must be specified'.
---------------------------
Break   Continue   Help  
---------------------------

André Luis

André Luis

Curtidas 0

Respostas

Rafael Mattos

Rafael Mattos

09/05/2011

Ha??
GOSTEI 0
Wilson Junior

Wilson Junior

09/05/2011

Estes teus arquivos estão em rede? Se estiver, vc tem permissão para acessá-los?
Verifique também se eles não estão como "Somente leitura".

Espero ter colaborado.
GOSTEI 0
André Luis

André Luis

09/05/2011

Wilson,

Os arquivos que tento importar estão no Drive E da minha máquina (ou seja, local).
Não tem nenhum atributo setado (os atributos somente leitura e demais estão desmarcados).

Obrigado pela ajuda, mas ainda sem solução.
GOSTEI 0
Rafael Mattos

Rafael Mattos

09/05/2011

faz a verificação antes para ver se existe


    if FileExists(edt_localizaarquivo.Text) then

talves seja a cocatenação que esteja errada


procedure Tfrm_principal.sb_importarquivoClick(Sender: TObject);
var
  ResultBusca : TSearchRec;
  i : Integer;
begin
  ChDir(Dir); // Posiciono o diretório selecionado para utilização do findfirst)
  cds_nfse.Active := True; 
  i := FindFirst('*.xml', faAnyFile, ResultBusca);
  while i = 0 do
  begin
    edt_localizaarquivo.Text := Dir + '\' + ResultBusca.Name; // Mostra o caminho e nome do XML para importar
    if FileExists(edt_localizaarquivo.Text) then 
        xmltp_nfse.XMLDataFile := edt_localizaarquivo.Text;
        cds_nfse.Append;
    end;
    i := FindNext(ResultBusca);
  end;
end;

GOSTEI 0
José

José

09/05/2011

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0
POSTAR