Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, boa tarde!
Estou com uma dúvida e creio que alguém já passou por esta situação também. Atualmente criei uma variável para realizar a leitura da pasta conforme mês atual, sendo:
FROM
Porém, devido ajuste do projeto precisaremos efetuar a leitura de todos os arquivos independente do ano / mês (tomei como exemplo o XML de Clientes).
Segue a estrutura para um melhor entendimento:
Tentamos colocar asteriscos (FROM
Abraço!
Rafael
Rafael,
eu nao consigo validar o seu codigo....Se o resultado for o esperado...
Mas fiz um teste aqui lendo varios diretorios dentro de um
e com o codigo abaixo le os arquivos ,QVD dentro de cada pasta
sub DoDir (Root)
for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd'
for each File in filelist (Root&'\*.' &Ext)
ArquivosLidos:
LOAD
'$(File)' as Name,
FileSize( '$(File)' ) as Size,
FileTime( '$(File)' ) as FileTime
autogenerate 1;
trace Lendo o arquivo $(Dir)/$(File) ;
LOAD * FROM [$(Dir)/$(File)] (qvd);
next File
next Ext
for each Dir in dirlist (Root&'\*' )
call DoDir (Dir)
next Dir
end sub
call DoDir ('C:\tmp\QVD');
Rafael,
podes fazer um laco e indo diretório por diretório lendo os arquivos.....
Tem exemplos no help...
Rafael, o asterisco vai funcionar apenas para o nome dos arquivos e não para os diretórios.
O que você terá que fazer é um FOR varrendo todos os seus diretórios para depois carregar os arquivos.
Segue abaixo um modelo de código que vai varrer uma árvore de diretórios. Lembre-se de alterar a variável com o caminho do diretório que deseja varrer (vPath) e caso precise também pode adicionar o tipo de arquivo que deseja buscar, adicionando mais extensões na linha 9 do código.
SET vPath = 'C:\Yuri\Projetos\BLA';
sub QVWDir(Root)
FOR each vExt in 'xml'
FOR each vFoundFile in filelist( '$(Root)' & '\*.'& '$(vExt)' )
Trace >> Arquivo Encontrado: $(vFoundFile);
LogManual_Atual:
LOAD
[@1:n] as NomeArquivoCompleto,
SubField([@1:n], '\', -1) as NomeArquivo,
SubField([@1:n], '\', -2) as Empresa,
Text(ApplyMap('MapaEmpresa', SubField([@1:n], '\', -2))) as Layout,
Date(Now(), 'DD/MM/YYYY hh:mm:ss') as DataHoraGeracao
INLINE '$(vFoundFile)' (fix, no labels);
NEXT vFoundFile;
NEXT vExt;
FOR each Dir in dirlist( '$(Root)' & '\*' )
call QVWDir('$(Dir)')
NEXT Dir;
end sub
Call QVWDir('$(vPath)');
Yuri, bom dia!
Muito legal!! Fiz um teste aqui, porém, notei que apresenta os dados do arquivo (exemplo: nome do arquivo, data da geração, entre outros). Na verdade eu gostaria de consumir as informações dos arquivos localizados, tem alguma maneira, é possível?
Obrigado!
Rafael
Alessandro, bom dia!
Gostei do site, muito bacana! Fiz um teste aqui, porém, notei que apresenta os dados do arquivo (exemplo: nome do arquivo, data da geração, entre outros). Na verdade eu gostaria de consumir as informações dos arquivos localizados, tem alguma maneira, é possível?
Obrigado!
Rafael
Acho que consegui, rsrs. Coloquei o load setando o from através da leitura do For Each, veja:
sub DoDir (Root)
for each Ext in 'xlsx'
for each File in filelist (Root&'\*.' &Ext)
Trace >> Arquivo Encontrado: $(File);
LOAD ID,
Valor
FROM
[$(File)]
(ooxml, embedded labels, table is Plan1);
next File
next Ext
for each Dir in dirlist (Root&'\*' )
call DoDir (Dir)
next Dir
end sub
call DoDir ('C:\Users\rafael.limeira\Desktop\For Each')
Se puder verificar se é isso mesmo, bem como sugestões de melhorias ficarei agradecido. Obrigado!
Alessandro,
Acho que consegui. Coloquei como resposta ao envio ao Yuri. Se puder verificar se é isso mesmo ou caso tenha sugestões de melhorias neste script manda aí 😜
Rafael,
eu nao consigo validar o seu codigo....Se o resultado for o esperado...
Mas fiz um teste aqui lendo varios diretorios dentro de um
e com o codigo abaixo le os arquivos ,QVD dentro de cada pasta
sub DoDir (Root)
for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd'
for each File in filelist (Root&'\*.' &Ext)
ArquivosLidos:
LOAD
'$(File)' as Name,
FileSize( '$(File)' ) as Size,
FileTime( '$(File)' ) as FileTime
autogenerate 1;
trace Lendo o arquivo $(Dir)/$(File) ;
LOAD * FROM [$(Dir)/$(File)] (qvd);
next File
next Ext
for each Dir in dirlist (Root&'\*' )
call DoDir (Dir)
next Dir
end sub
call DoDir ('C:\tmp\QVD');
Top Alessandro, muito bom!! Valeu!
Abraço!
Rafael