Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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.
>
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.
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
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.
Sim a conexão é feita via odbc no oracle, como poderia fazer isso?
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 ....
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.
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),
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!
Aí teria de ter outra tabela USUARIO_EMPRESA_HABILITADA já que é 1:n ...
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!
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
Este relatório é em Report Server? Qual a versão do SQL?