Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fnunez33

Criando um relatório que limite acesso aos usuários

Recommended Posts

Boa Tarde a Todos,

 

Tenho um relatório que traz uma relação de promoções cadastradas para todas as filiais, quando um usuário tira ele sai pra todas as filiais.

Agora preciso colocar isso no sistema da seguinte forma:

Preciso que o relatório identifique de que filial é o usuário e somente traga as informações de sua filial.

 

Nesse relatório já existe um campo Empresas que traz o código da empresa, e temos uma tabela de usuários que traz a empresa que o usuário tem acesso como poderia fazer para que o sistema reconheça o usuário que está tirando o relatório e fazer com que o relatório só traga os dados correspondente a sua filial?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Na verdade ele é um sistema com banco em oracle, que tem uma funcionalidade para que o próprio usuário crie seus relatórios, então por isso preciso saber nesse caso como fazer para não precisar solicitar uma consultoria paga.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Na verdade ele é um sistema com banco em oracle, que tem uma funcionalidade para que o próprio usuário crie seus relatórios, então por isso preciso saber nesse caso como fazer para não precisar solicitar uma consultoria paga.

Cara, depende muito da sua aplicação, de como ela esta construída, de como esta feito este relatório, de que parâmetros de inicialização esta sendo passado.

São muitas variáveis a serem analisadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

Entendo a situação, mas o que queria realmente saber é como fazer isso com o seguinte exemplo

 

 

select distinct pe.db_sp_codigo, pe.db_sp_descr, pe.db_sp_cliente, 
pe.db_sp_tpcli, pe.db_sp_destino, pe.db_sp_empresa, reg.db_spr_seq, 
reg.db_spr_produto, reg.db_spr_familia, pe.db_sp_situacao
from db_split pe, db_split_regra reg, dbs_usuario us
where pe.db_sp_codigo = reg.db_spr_codigo 
and pe.db_sp_situacao = '1' 
and us.dbs_usu_empresas like  pe.db_sp_empresa 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade ele é um sistema com banco em oracle

 

 

No Oracle se usa o usuário Oracle para conectar no Sistama ?

 

Existe uma coluna virtual chamada USER que se pode usar para saber o usuário.

 

Se poderia Cruzar a filial do usuário (User) contra a Filial do Relatório não permitindo a extração não autorizada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas o usuário do Sistema é o user Oracle ?

 

De qualquer forma o teste básico é

 

dbs_usuario.filial  = db_split.filial

ou algo assim ....

 




			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, o usuário é criado por esse sistema, o user do oracle é um pra todos !

 

O que eu havia imaginado é algo como fazer o usuário digitar seu login no sistema, e como na tabela de usuários eu tenho o login e empresa do usuário, é comparar estes campos ao empresa do relatório ai tirar o relatório onde seriam extraídas somente as informações onde a empresa do relatório seja a mesma do usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu havia imaginado é algo como fazer o usuário digitar seu login no sistema, e como na tabela de usuários eu tenho o login e empresa do usuário, é comparar estes campos ao empresa do relatório ai tirar o relatório onde seriam extraídas somente as informações onde a empresa do relatório seja a mesma do usuário.

 

Empresa então

 

dbs_usuario.empresa = db_split.empresa

ou até

 

 

nvl(dbs_usuario.empresa,db_split.empresa) = db_split.empresa

Empresa do Usuário em branco(null) permite acesso à todas(caso seja preciso um super-usuário),

 




			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para um usuário funcionou legal, que só tem acesso a sua empresa, porém para os que tem mais de uma empresa, ou em branco que seriam todas não sai nada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí teria de ter outra tabela USUARIO_EMPRESA_HABILITADA já que é 1:n ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imaginei o Seguinte,

 

Como para um usuário funciona, não tem como fazer uma condição de quando o usuário for em branco ele rodar um outro select sem solicitar usuário ai rodando para todas as empresas?

 

Tentei aqui com case mas não deu certo!

Compartilhar este post


Link para o post
Compartilhar em outros sites
de quando o usuário for em branco ele rodar um outro

faça algo assim ...

 

 

 

nvl(trim(dbs_usuario.empresa),db_split.empresa) = db_split.empresa

se dbs_usuario.empresa for branco ou nulo o teste será se

 

 

db_split.empresa = db_split.empresa

que sempre >> true

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.