Fórum Erro ao usar XMLDataFile (do #400625
09/05/2011
0
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
Curtir tópico
+ 0Posts
09/05/2011
Rafael Mattos
Gostei + 0
09/05/2011
Wilson Junior
Verifique também se eles não estão como "Somente leitura".
Espero ter colaborado.
Gostei + 0
09/05/2011
André Luis
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
09/05/2011
Rafael Mattos
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
22/04/2013
José
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)