Loop em um pasta do windows

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
diegorp
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 23 Mar 2009 10:44 am
Localização: Sapiranga - RS

Bom dia, tenho uma pasta com vários xml de nota eletronica, só preciso fazer um loop nessa pasta pra pegar o xml que tenha o numero da nota que estou procurando, eu faço um substr(v_nome_xml,25,10) pra comprar o numero da nota. Como faço o loop nos arquivos para comparar o numero da nota e pegar o xml certo?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Veja esse tópico:
http://glufke.net/oracle/viewtopic.php?p=5870

Essa forma funciona nas seguintes condições:
* Tem que ter instalado a D2KWUTIL
* No forms 6i, os arquivos que você quer ler estão ná maquina do CLIENTE (não no servidor)
* No forms 9i, os arquivos que você quer ler estão no servidor de aplicação.

Como você não disse qual versão do forms você tem, se é web, nem onde estão os arquivos, não temos como direcionar melhor :-/
diegorp
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 23 Mar 2009 10:44 am
Localização: Sapiranga - RS

Estou usando o forms 6i, tambm tenho a D2KWUTIL
Os arquivos xml estão na maquina do usuario e não no servidor
diegorp
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 23 Mar 2009 10:44 am
Localização: Sapiranga - RS

dr_gori escreveu:Veja esse tópico: etc
Até rodou, sem erros, montei em uma função mas a retorna vazia sempre, não esta pegando o nome do arquivo xml.
diegorp
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 23 Mar 2009 10:44 am
Localização: Sapiranga - RS

Usei a seguinte função:

o nome do xml da nota é

Selecionar tudo

43110805877250000128550010000023101070005008-procNfe
Sabendo o numero da nota eu consigo ir até a pasta em que estão os varios xml de varias notas e procurar o que eu preciso.

Selecionar tudo

FUNCTION FN_PROCURA_XML RETURN varchar2 IS
  --
  the_command  varchar2(2000);
  pCaminho     varchar2(2000) := 'C:\xml_nota';
  pNomeArquivo varchar2(2000) := to_char(23101,'fm0000000000');
  pNroNota     number(10)     := 23101;--:nota_saida.nr_nota; 
  pArquivo     Text_IO.File_Type; 
  filename     varchar2(200) ;
  linebuf      varchar2(1800);
  pNomeXML     varchar2(100);
BEGIN 
  --
  the_command := 'dir '||pCaminho||' /B > '||pCaminho||'\'||pNomeArquivo;
  --
  -- Executa comando para arquivo
  Host( the_command, NO_SCREEN ); 
  --
  filename := pCaminho||'\'||pNomeArquivo;
  --
  --Abre o arquivo  
  pArquivo := Text_IO.Fopen(filename, 'R'); 
  --
  begin
    loop
      --
      Text_IO.Get_Line(pArquivo, linebuf);
        --
        if linebuf is null then
          --
         	exit;
         	--
        end if;
         --
        if SUBSTR(linebuf,26,10) = to_char(pNroNota,'fm0000000000') then
        	--
          pNomeXML := linebuf||chr(10); 
          --
          linebuf := null;
          --
          exit;  
          --   
      end if;
      --
    end loop;
    --
    return('C:\xml_nota\'||pNomeXML);
    --
exception
    when no_data_found then
      --
      Text_IO.Fclose(pArquivo);
      --
      clear_message;
      message('pNomeXML: '||'C:\xml_nota\'||pNomeXML);
      message(' ');
  end;  
END;
ballboas
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 98
Registrado em: Qui, 02 Ago 2007 3:06 pm
Localização: sp
Érico Balboa

A pergunta mais cretina é aquela que não é feita

quando precisei fazer uma atividade similar a sua, percebi q o "dir" não funcionava direto no Host, eu tive q fazer uma "gambiarra" q era criar um ".bat" com text_io com o comando:

Selecionar tudo

 dir c:\seu caminho > c:\arquivo.txt 
Com o Host você chama este ".bat" que vai executar o seu comando.

Ele vai criar um arquivo (arquivo.txt) com o conteúdo do dir que você especificou.

Feito isso, com o próprio Text_io, você varre este txt criado para procurar o q você quer, ou seja, você está verificando no conteúdo se existe algum arquivo com o parâmetro que você precisa.

Não esqueça de deletar os dois arquivos q você criou (.txt e .bat)

Não sei se ajudei, mas....
Se não ficou muito claro, dá um grito q eu procuro pelo método q eu apliquei e posto aqui.

Boa Sorte
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes