Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá a todos!
Ultimamente tenho tentado fazer uma implementação de um login automático de forma que eu consiga abrir o QVW (que já contém o section access), fazer o Login com um determinado usuário e depois pressionar um botão, fechar o documento e passar para o próximo possível login.
Depois de procurar, futricar e testar consegui uma forma para abrir de acordo com um usuário e senha em variável utilizando o comando OpenDoc(). Também consegui uma forma para passar o usuário e senha de acordo com uma tabela previamente carregada e criada na aba do qvw.
O meu problema está na hora de fechar o QVW que contém o section access e abrir ele novamente com o próximo login. O que acontece é que o QVW com section access está aberto na mesma instância que o arquivo que está verificando os logins.
Segue o código da macro do QVW que está verificando os logins:
SUB GerarPDFUsuarios
CreateObject("QlikTech.QlikView")
set App = ActiveDocument.GetApplication
'App.OpenDoc "D:\LGDev2\FPwBI\Suporte\Sinobras\FPwBI-Folha.qvw","6", "$1N0B%4$"
'set Username = ActiveDocument.Variables("vUsuario")
'set Password = ActiveDocument.Variables("vSenha")
Set Table = ActiveDocument.GetSheetObject( "TB01" )
For RowIter = 1 to table.GetRowCount-1
'LINHA 'Loop para
ler a tabela criadaset cell = table.GetCell(RowIter,ColIter)
set cell2 = table.GetCell(RowIter,ColIter+1)
set Username = cell
set Password = cell2
Set MyDoc = App.OpenDoc ("D:\Teste.qvw", Username.text,
Password.text) 'Abrindo documento com usuario e senha
Set Button1 =
MyDoc.GetSheetObject("BU462")
'Utilizando botão que contém a ação
IF
IsObject(Button1)
THEN
'SE botão Existe Então
Button1.Press
'Botão é pressionadoEND IF
'MyDoc.GetApplication.Quit
'ActiveDocument.Activate
'Fecha documento aberto.'MyDoc.CloseDoc
Set MyApp = Nothing
Next
END SUB
No QVW Teste.qvw contém o botão que será pressionado.
No código comentei a parte em que o arquivo é fechado pois qunado uso o MyDoc.CloseDoc não fecha o arquivo e a macro abre, e quando utilizo o MyDoc.GetApplication.Quit ele fecha toda a instância e assim cancelando o loop.
Se alguém tiver alguma idéia de como fazer isso de outra forma ou então verificar o que pode estar errado, agradeço desde já.
Gustavo, a sessão de acesso basicamente faz uma seleção em um campo, creio que este deva ser o procedimento mais simples (e não abrir o qvw e fazer login com um usuário).
Faça da seguinte forma: O seu acesso deve partir de um usuário que tenha acesso a TODOS os dados, ou seja, não sofre redução de dados. Em sua macro, faça um processo para selecionar o que o usuário XPTO pode ver e gere o seu relatório, depois selecione o que o usuário XPTU pode ver e gere o seu relatório e assim por diante.
Acho que ideal para você é criar uma sessão de acesso através do NTNAME, desta forma se o usuário que vai abrir este QVW estiver na sessão, não será solicitado o login.
Yuri,
Se não estou enganado, dessa forma a pessoa que estaria na sessão seria a que abriria o arquivo correto? Nesse caso, como eu faria para passar por todos os usuários?
Sim, mas porque você precisaria logar com todos os usuários?
Basicamente, porque foi o que me pediram para ser feito. No caso o botão que está no outro arquivo gera um pdf e foi me pedido para que gerasse um relatório com as informações do qvw em um PDF e além disso, que respeitasse a restrição de informação que cada usuário pode visualizar.
Gustavo, a sessão de acesso basicamente faz uma seleção em um campo, creio que este deva ser o procedimento mais simples (e não abrir o qvw e fazer login com um usuário).
Faça da seguinte forma: O seu acesso deve partir de um usuário que tenha acesso a TODOS os dados, ou seja, não sofre redução de dados. Em sua macro, faça um processo para selecionar o que o usuário XPTO pode ver e gere o seu relatório, depois selecione o que o usuário XPTU pode ver e gere o seu relatório e assim por diante.