Ajuda - Filtro em Formulário pelo usuário logado + id_setor

Olá a todos do fórum, tenho o scriptcase já ha algum tempo, mas confesso não utilizo. Estou começando a fazer uma pequena aplicação nele.

Nesta aplicação quero controlar documentos (diversos). Tenho para isso a seguinte estrutura:

Tabelas:
tbl_documento;tbl_detalhes;tbl_tipodoc;tb_setor.

Inseri a parte de segurança do SC8; Na tabela sec_users inseri um campo id_setor.

Gostaria de ao fazer login e entrar no formulário de documentos (mestreXdetalhe), este filtrasse pelo usuário atrelado ao setor pelo id_setor na tabela sec_users. Exibindo assim somente os documentos pertencentes aquele setor. Em sendo pertencente ao grupo administrador, liberaria todos os documentos.

Alguém sabe como posso fazer isso? Gostaria de um passo a passo, pois não manjo muito de scriptcase, nem de PHP.

Aguardo as dicas dos mestres.

Analise o código de autenticação dentro da aplicação login criado pelo scriptcase lá ele cria a variável global com o nome do usuário,
altere a SQL lá para pegar o id_setor também.

ai veja como ele cria a variável global do nome do usuário e crie a [glo_id_setor] ai no SQL ou WHERE das aplicações que você
quer filtro coloque para id_setor = [glo_id_setor]

E uma dica muito importante, nunca crie variáveis de categorias diferentes com o mesmo nome, se não o SC mistura elas.

Tipo no seu formulário de cadastro você tem: {nome}, ai se precisar pegar ‘nome’ em um SQL e jogar em uma variável para usar
pegue ele como $nome_x, se precisar criar uma variável global do mesmo crie como: [glo_nome], assim você vai evitar de
ficar procurando muitos bugs de função que não executariam como deveriam e foram programadas por você.

Jailton, blz fiz como me instruiu e funcionou blz.

Agora quero só implementar uma melhoria, tipo se o usuário for do grupo admin, libera todos os registros, como posso fazer?

Mesma solução anterior pega o grupo do usuário no login também.

Ai no onScriptIni do formulário monta a variável [glo_filtro] e compara o [glo_grupo] se for
usuário normal >> [glo_filtro] = ‘id_setor = [glo_id_setor]’;
se for Administrador >> [glo_filtro] = ‘id_setor <> 999999’;

Ai lá no Where é só por o [glo_filtro].

Desculpe Jailton,

Não consegui captar a maneira, pode ser mais detalhista, não manjo muito do scriptcase.

no where atual eu fiz assim:

idsetor=[usr_idsetor]

não consigo fazer algo assim?

if($usr_priv_admin == ‘N’) {
idsetor=[usr_idsetor];
}

é só colocar no where o [glo_filtro] sozinho

Tipo:

Select NOME, ENDERECO FROM CLIENTES WHERE [glo_filtro]

Dentro do [glo_filtro] ele já tá substituindo por isso:
usuário normal >> [glo_filtro] = ‘id_setor = [glo_id_setor]’;
se for Administrador >> [glo_filtro] = ‘id_setor <> 999999’;

Essa parte que irá compor o [glo_filtro] que não ficou muito claro

no onScriptIni como ficaria o código em seu exemplo só pra eu ver como fica a sintaxe, lembrando não manjo muito de scriptcase.

Faça a condição direto no Where do formulário:

id_setor = [setor] or [usr_priv_admin] = ‘Y’

A variável usr_priv_admin se não me engano não usa o padrão Y ou N e sim 0 ou 1, precisa confirmar lá na aplicação de login, acho que ela troca em um if os valor.

Olá Jailton,

Fiz assim no formulário pai:

inseri como você falou o código no onScriptInit

sc_reset_global([glo_filtro]);
sc_set_global($glo_filtro);
if ([usr_priv_admin] = 0) {
$glo_filtro = ‘id_setor = [usr_idsetor]’;
}

E coloquei na clausula where 0 [glo_filtro]

O que acontece: qdo logo como administrador ele passa legal e abre tudo. Se utilizo um usuário diferente de Administrador, ele tras o formulário porém ao navegar fica em processamento, tipo loop. E não filtra só os registros daquele setor.

O que estou fazendo de errado?

Olá Jailton, fiz exatamente o que você indicou, e olha o que tenho dse resultado:

e qdo tento navegar entre os registro com o filtro indicado, fica assim conforme

Quando entro como Administrador ele navega normal.

Quanto as configurações sugeridas, veja se estou fazendo certo:

e

Está Correto?

Comparação em PHP (C/C++) é 2 sinais (==), um sinal = é só para atribuir o valor a variável.

if ([usr_priv_admin]=1) {

Vai ficar:
if ([usr_priv_admin]==1) {

Mude os: $glo_filtro =
para [glo_filtro] =

Remova a macro:
sc_set_global($glo_filtro);

Olá Jailton, estou evoluindo bastante, mas qdo cadastro um documento e sua movimentação ao consultar, aparece desse jeito:

Parou de dar o erro que dava antes ao paginar e não filtrar como o da tela abaixo:

Entre no Menu do SCRIPTCASE > Meu Scriptcase, Configuração e desative os 2 checkbox de segurança.

Ai gera e executa novamente que vai dar certo.