Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: 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)