Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, na verdade tenho duas dúvidas quanto a isso.
1. é possível usar funções na seção de acesso?
2. a seção de acesso tem que ser a primeira parte do script?
Estou tendo problemas com o script abaixo:
SECTION Access;
OLEDB CONNECT TO [Provider=ADsDSOObject;User ID=DOMINIO\administrator;Encrypt Password=False;Data Source=LDAP://dominio.com;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648] (XPassword is );
grupos:
LOAD
distinguishedName as chaveGrupo,
cn as nomeGrupo,
RowNo() as numGrupo;
SQL
select
distinguishedName,
cn
from 'LDAP://dominio.com/OU=QlikView,OU=Matriz,DC=dominio,dc=com'
where objectCategory='group';
FOR contador = 1 to FieldValueCount('numGrupo')
LET vChaveGrupo = FieldValue('chaveGrupo',$(contador));
LET vNomeGrupo = FieldValue('nomeGrupo',$(contador));
ACESSOS:
LOAD
'ADMIN' as ACCESS,
'DOMINIO\'&upper(sAMAccountName) as NTNAME,
Upper('$(vNomeGrupo)') as GRUPO;
SQL
SELECT
sAMAccountName,
cn
FROM 'LDAP://dominio.com'
WHERE memberOf='$(vChaveGrupo)';
NEXT
DROP Table grupos;
SECTION Application;
permissoes:
load * inline
[ GRUPO, UNIDADE, REGIAO
GERAL, *, *
IMPRESSAO, IMPRESSAO, 1
REVENDA, REVENDA, *
SUL, REVENDA, 2
] ;
Tentei também colocar a SECTION Access no meio do fonte, só carregando a tabela ACESSOS, mas não funcionou a redução.
Segue um exemplo.
No meu caso criei o qvd de acesso com os usuários:
ACCESS, USERID, PASSWORD, GRUPO
ADMIN, USER1, USER1, GERAL
ADMIN, USER2, USER2, IMPRESSAO
ADMIN, USER3, USER3, REVENDA
Acredito que faltou apenas o 1=1 para funcionar seu código.
1. Sim
2. Sim
OBS: Acredito que você possa fazer todas essas funções em outra app (Gera QVD por exemplo) e carregar a informação pronta para o seu Section Access.
Lembre-se que no Section Access as colunas e valores devem estar todos em caixa alta.
Obrigado Yuri!
Dessa forma realmente que eu consegui resolver. Não estava querendo muito gerar QVD, mas analisando melhor acho que será melhor.
Abs
SECTION Access;
LOAD ACCESS,
NTNAME,
GRUPO
FROM
acessos.qvd
(qvd);
SECTION Application;
permissoes:
load * inline
[ GRUPO, UNIDADE, REGIAO
GERAL, *, *
IMPRESSAO, IMPRESSAO, 010103
REVENDA, REVENDA, *
SUL, REVENDA, 010190
] ;
Cara, alguma ideia de porque isso simplesmente não funciona?
Me passa o QVD (acessos.qvd - pode ser modificado) que verifico para você.
Você esta utilizando a Redução Inicial de dados?
Segue anexo Yuri.
Estou com redução dinâmica, segue o QVW também.
Segue um exemplo.
No meu caso criei o qvd de acesso com os usuários:
ACCESS, USERID, PASSWORD, GRUPO
ADMIN, USER1, USER1, GERAL
ADMIN, USER2, USER2, IMPRESSAO
ADMIN, USER3, USER3, REVENDA
Acredito que faltou apenas o 1=1 para funcionar seu código.
Po cara, where 1=1; resolveu mesmo.. haha
valeu!
Já bati cabeça com isso! Só não me pergunte porque utilizar isso.
Olá Pessoal,
Esse erro ocorre em algumas versões do QlikView, pois o ele faz e leitura otimiza gerando o erro.
Tenho conhecimento desse erro em apenas duas situações: No Section Access e na utilização de Mapping.
A utilização do Where 1=1 é necessária, pois o QlikView deixa de ler o arquivo QVD de forma otimizada.
Outra forma é utilizar função nos campos da tabela de acesso.
LOAD
UPPER(ACCESS) AS ACCESS,
UPPER(NTNAME) AS USER,
UPPER(GRUPO) AS GRUPO
FROM
[acessos.qvd]
(qvd);
Abraços.
Tonial.