Filtro em lista dinâmica
-
Tenho um formulário que preciso fazer um filtro no componente "lista dinâmica" =, conforme o usuário que estiver logado.
Até ai tudo bem, fiz um função que ao logar no sistema, cria uma variável de sessão com a filial que este usuário pertence e o filtro funciona corretamente. o problema está quando um gerente loga no sistema e precisa ver todas as filiais.
Já tentei criar a variável como letra e variante, mas sempre que vai mostrar a lista para o gerente não mostra nada.Sendo que para o usuário normal gera um único código Ex.: 1
Para o gerente gera uma lista. EX.: 1,2,3,4Alguma dica do que fazer?
-
@AlexSantos você pode utilizar o filtro com IN, segue exemplo de utilização com a tabela FR_ACAO:
Select
fr_acao.aco_codigo,
fr_acao.aco_nome
From
fr_acao
Where
fr_acao.aco_codigo In (1, 2, 3)Dessa forma vai trazer os registros com o ID 1 ,2 ,3.
Basta adaptar agora para a sua necessidade.
-
Obrigado Marcos pela resposta.
Eu usei o filtro com IN, mas como o dado vem de uma variável de sessão, eu utilizei o filtro assim:where fr_acao.aco_codigo In (:FUNCAO_sessao_clinv).
Quando a variável é com somente um valor funciona corretamente, mas quando tem dois ou mais, não funciona.
Preciso saber como construo esta variável de sessão para funcionar com o IN, quando tem mais de um valor. Ou se altero algo no select da lista dinâmica.Mais uma vez obrigado.
-
Ai nesse caso você deveria realizar um subselect para compor o IN, que seria nessa linha:
select filial.fil_codigo, filial.fil_nome from filial where filial.fil_codigo in (select usuario_filial.fil_codigo from usuario_filial where usuario_filial.usr_codigo = <código do usuário>)
Com isso iria retornar as filiais que ele tem acesso.
Basta adaptar a ideia para o que você necessita.