Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
diogoduarte
Partner - Contributor III
Partner - Contributor III

Funções na Seção de Acesso

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.

1 Solution

Accepted Solutions
nicolett_yuri

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.

View solution in original post

9 Replies
nicolett_yuri

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.

diogoduarte
Partner - Contributor III
Partner - Contributor III
Author

Obrigado Yuri!

Dessa forma realmente que eu consegui resolver. Não estava querendo muito gerar QVD, mas analisando melhor acho que será melhor.

Abs

diogoduarte
Partner - Contributor III
Partner - Contributor III
Author

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?

nicolett_yuri

Me passa o QVD (acessos.qvd - pode ser modificado) que verifico para você.

Você esta utilizando a Redução Inicial de dados?

diogoduarte
Partner - Contributor III
Partner - Contributor III
Author

Segue anexo Yuri.

Estou com redução dinâmica, segue o QVW também.

nicolett_yuri

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.

diogoduarte
Partner - Contributor III
Partner - Contributor III
Author

Po cara, where 1=1; resolveu mesmo.. haha

valeu!

nicolett_yuri

Já bati cabeça com isso! Só não me pergunte porque utilizar isso.

fernando_tonial
Partner - Specialist
Partner - Specialist

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.

Don't Worry, be Qlik.