Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Como validar arquivos antes da carga?

Estou precisando confirmar a existência de um arquivo QVD antes de fazer a carga.

O motivo é que caso o arquivo não exista, faço uma conexão (LDAP ou OLEDB) e gravo um novo QVD.

Se já existir, verifico se é muito antigo (com o FileTime) pra decidir se faço outra carga ou carrego o QVD existente.

1 Solution

Accepted Solutions
rphpacheco
Creator III
Creator III

Bom dia Rodrigo.

Tente desta maneira

LET Tamanho_Arquivo= FileSize('C:\teste.txt');

If Not Isnull($(Tamanho_Arquivo)) then

Conexão;

Leitura dos dados;

end if


Coloquei no exemplo apenas uma carga experimental, mas você poderá incluir a sua necessidade acrescentando um else

View solution in original post

8 Replies
Clever_Anjos
Employee
Employee

IF not Filesize('caminho e nome do arquivo') > 0 then

    //Conectar

end if

Not applicable
Author

Assim não deu.

Quando o arquivo não existe, dá erro na execução do script.

Obrigado por responder.

Clever_Anjos
Employee
Employee

Deve ter outra coisa errada. O trecho abaixo roda certinho

if FileSize('c:\essearquivonaoexiste.txt') > 0 then

  trace Arquivo existe;

end if

Clever_Anjos
Employee
Employee

Coloca seu código e qual a mensagem de erro que gera

rphpacheco
Creator III
Creator III

Bom dia Rodrigo.

Tente desta maneira

LET Tamanho_Arquivo= FileSize('C:\teste.txt');

If Not Isnull($(Tamanho_Arquivo)) then

Conexão;

Leitura dos dados;

end if


Coloquei no exemplo apenas uma carga experimental, mas você poderá incluir a sua necessidade acrescentando um else

Not applicable
Author

Pessoal, com o Isnull() deu certo!

Eu uso o script em vários painéis para identificar os usuários ativos do meu ActiveDirectory.

Assim não preciso carregar toda hora do LDAP. Mas se o usuário nunca carregou, tem que criar.

O código ficou assim:

Let usermaq=mid(OSuser(),12);

Let Tamanho_Arquivo=FileSize('E:\ScriptAD\InativosAD_$(usermaq).qvd');

If not Isnull(Tamanho_Arquivo) then

  If FileTime('E:\ScriptAD\InativosAD_$(usermaq).qvd') >= now()-0.1 Then

    //Rotina para carregar direto do QVD (dados criados há menos de 2,4 horas)

    Exit Script

  Endif

Endif

//Rotina para carregar com a conexão LDAP (criar novo QVD ou atualizar dados)

Not applicable
Author

Clever, testei com o FileSize de novo.

Mas quando o arquivo não existe, ele não entra na rotina:

Let usermaq=mid(OSuser(),12);

if not FileSize('E:\ScriptAD\InativosAD_$(usermaq).qvd') > 0 then

  load 'deu certo' as x AutoGenerate 1;

Endif

matzenbacher
Creator II
Creator II

Parabéns amigo, só lembra de setar a resposta correta pra quem te lançou a lógica da parada (y)