Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

qv.exe /r

Pessoal,

To com um problema que não consigo resolver.

Tenho 4 cenários que sempre ficam abertos e atualizo os mesmos com o comando abaixo:

Qv.exe /r C:\metas.qvw

start /MAX C:\metas.qvw

Eu tenho um objeto que me diz a data da última atualização, mas o problema é o seguinte, na primeira execução executa o script, abre o arquivo e atualiza, na segunda carga, executa mas a data da última atualização fica na primeira carga.

Tags (1)
13 Replies
maiconmello
Contributor III

Re: qv.exe /r

Bom dia Rodrigo,

Mas você roda um bat algo assim pelo que entendi correto ?

Acho que melhor seria colocar no agendador de tarefa do windows apenas para abrir o modelo.

Ai no modelo você coloca um disparador ao abrir de fazer a carga.

Ou ainda pode fazer uma macro simples e dizer em quanto quanto tempo queres fazer um reload .

Ai nesse caso ele fica aberto, e executando a macro de tempo em tempo.

Att,

Maicon Mello

Not applicable

Re: qv.exe /r

Sim,

Eu estou fazendo pelo agendador de tarefas.

Na parte de macro estou meio "cru" ainda.

Você teria uma exemplo?

offjunior
Contributor

Re: qv.exe /r

Boa tarde Amigo!


Tenta assim:


Troque isso

Qv.exe /r C:\metas.qvw


Por isso

Qv.exe C:\metas.qvw


Isso somente irá abrir seu documento QVW, sem recarregar, salvar e fechar como o /r faz


Ai nesse mesmo documento QVW (C:\metas.qvw) acesse o modulo de macros (CTRL+M)

E escreva a seguinte macro:


sub Recarga

  'Faz a recarga

  ActiveDocument.Reload

 

  'Faz a macro esperar a aplicação terminar oque está fazendo antes de prosseguir - IMPORTANTE

  ActiveDocument.GetApplication.WaitForIdle

 

  'Salva o documento

  ActiveDocument.Save

 

  'Faz a macro esperar a aplicação terminar oque está fazendo antes de prosseguir - IMPORTANTE

  ActiveDocument.GetApplication.WaitForIdle

 

  'Fecha a aplicação

  Application.Quit

end sub

No lado esquerdo do Módulo de Macro, mais abaixo, na opção Módulo de Segurança Requerido coloque Acesso ao Sistema, na opção Segurança Local Atual coloque Permitir Acesso ao Sistema.


Agora feche o Módulo de Macros e acesse a opção Configurações>> Propriedades do Documento aba Disparadores, em Disparadores de Evento de Documento, selecione a opção Ao abrir, clique no botão ao lado Adicionar Ação, vai abrir um outra telinha onde você vai clicar em Incluir, escolha na caixa Tipo de Ação a opção Externo e na caixa Ação a opção Executar Macro, clique em OK, na caixinha de texto ao lado chamada Nome da Macro coloque o nome da sua macro, nessa caso Recarga, clique em OK.


Agora salve seu documento qvw (C:\metas.qvw) feche e teste com agendamento do windows executando o seu bat agora alterado ou podes simplesmente abrir o seu documento e ver se ele irá proceder da seguinte forma, Abrir, Recarregar, Salvar e Fechar a aplicação.


Para abrir novamente o documento sem executar a macro, abra primeiramente o Qlikview, escolha esse Documento em Abertos Recentemente, e clique nele segurando CTRL+SHIFT juntos. Isso abre o Doc sem executar as macros.


Acho que é isso...


Estou a disposição, abraço!




Not applicable

Re: qv.exe /r

Essa macro até funciona, mas o que preciso não é bem isso.

O cenário sempre vai ficar aberto na televisão do cliente e a cada 10 minutos eu quero dar como se fosse um CTRL+R. Ou seja atualizar a cada 10 minutos sem fechar o arquivo.

offjunior
Contributor

Re: qv.exe /r

Mas nessa televisão está aberto com Qlik Desktop ou pelo Servidor Web Browser?

Por que se tiver pelo servidor, assim que você atualizar o Documento pelo agendamento (Qlik Desktop), no servidor ele vai atualizar também e na televisão você vai notar uma pequena piscada, porem vai atualizar também, sem perder a sessão.

Agora se tiver na televisão rodando pelo Qlik Desktop, ai temos que pensar outra forma.

MVP
MVP

Re: qv.exe /r

Boa noite.

Exemplo de macro que faz uma apresentacao aba a aba por X segundos e depois de 5 vezes, faz uma carga.

Ao iniciar da para colocar um disparador na macro.    Mudar os ID das pastas para funcionar (PASTA1,PASTA2.....)

Se quiser, podes tirar o laco das abas para a cada X segundos/minutos dar uma nova carga.

sub proximo

  ActiveDocument.Reload()

  For i = 1  to 5

  ActiveDocument.ActivateSheetByID "PASTA1"

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.WaitForIdle 15000

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.Sleep 15000

  ActiveDocument.ActivateSheetByID "PASTA2"

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.WaitForIdle 15000

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.Sleep 15000

next

  proximo

end sub

Not applicable

Re: qv.exe /r

Minha situação é a seguinte:

Vão ficar 4 cenários desktop abertos na televisão, cada um tem somente uma pasta.

Manualmente eu vou em janela e troco de cenário e faço a carga.

O que eu preciso:

Cada 10 minutos trocar de arquivo e fazer a carga:

Exemplo:

Cenário 1: 08:00

Cenário 2: 08:10

Cenário 3: 08:20

Cenário 4: 08:30

Quando for 08:40 voltara o ciclo. ou seja, cada arquivo terá um intervalo de 40 minutos para cada carga.

Att,

Rodrigo

Not applicable

Re: qv.exe /r

É desktop

Minha situação é a seguinte:

Vão ficar 4 cenários desktop abertos na televisão, cada um tem somente uma pasta.

Manualmente eu vou em janela e troco de cenário e faço a carga.

O que eu preciso:

Cada 10 minutos trocar de arquivo e fazer a carga:

Exemplo:

Cenário 1: 08:00

Cenário 2: 08:10

Cenário 3: 08:20

Cenário 4: 08:30

Quando for 08:40 voltara o ciclo. ou seja, cada arquivo terá um intervalo de 40 minutos para cada carga.

Att,

Rodrigo

maiconmello
Contributor III

Re: qv.exe /r

Essa macro funciona bem:

Seu modelo Metas.qvw, possui 4 abas. pode fazer o exemplo a baixo:

sub proximo

  ActiveDocument.Reload()

  For i = 1  to 5

  ActiveDocument.ActivateSheetByID "PASTA1" 'Onde possuir  pasta1,pasta2 ... colocar o id de cada pasta.

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.WaitForIdle 15000 'Determinar o tempo em milisegundos

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.Sleep 30000  'Determinar o tempo em milisegundos

  ActiveDocument.ActivateSheetByID "PASTA2"

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.WaitForIdle 15000

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.Sleep 15000

  ActiveDocument.ActivateSheetByID "PASTA3"

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.WaitForIdle 15000

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.Sleep 15000

  ActiveDocument.ActivateSheetByID "PASTA4"

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.WaitForIdle 15000

  ActiveDocument.GetApplication.Refresh

  ActiveDocument.GetApplication.Sleep 15000

 

  next

  proximo()

end sub