[RESOLVIDO] Exibir todos os pedidos quando logado como administrador

Olá pessoal sou novo no SC, estou criando um sistema de suporte técnico e estou com algumas dúvidas, preciso exibir em uma grid todos os chamados criados pelos operadores quando eu estiver logado como Administrador, lembrando que eu alterei o SQL da Grid para exibir apenas os chamados por usuário logado.

Eu fui até o SQL da Grid e acrescentei a cláusula WHERE PARA EXIBIR OS CHAMADOS CONFORME O USUÁRIO LOGADO QUE SERIA ISSO:

WHERE NomeUsuario = ‘[usr_login]’ dessa forma consigo exibir os chamados de acordo com o operador logado.

Agora eu preciso que o admin tenha acesso na grid de todos os chamados, onde altero e como faço.

Peço ajuda dos colegas porque já procurei e não achei nada.

Olá,

Crie uma variável na tua aplicação login e faça o teste, colocando o WHERE que desejas em uma variável global,mais ou menos assim:

if([usr_login] == ‘admin’)
{
[cwhere] = “1=1”;
}
else
{
[cwhere] = “NomeUsuario = ‘[usr_login]’”;
}

E no SQL da grid coloque no WHERE:

where [cwhere]

Vou criar a variável no Campo login do app_userLogin em valor definido crio o nome da variavel, depois vou inserir esse código em qual evento e aonde.

A criação da variavel seria dessa forma porque fiz e não deu certo sou iniciante no SC, se puder abrir mais a minha mente.

Valor definido = Valor inicial que será [cwhere].

Resumindo não entendi, tem algum tutorial que possa ver.

Fiz mas está aparecendo uma mensagem que não foi possível acessar o banco de dados. Eu criei uma cópia do grid tem como eu chamar essa copia do grid somente quando o Administrador estiver logado.

Olá,

Você deve colocar o código que te passei no evento OnValidate, onde a variável global [usr_login] é criada. Depois disto, abra a sua consulta e no SQL da consulta coloque o where de acordo com a tua necessidade, mais ou menos assim:

SELECT
campoA,
campoB,

FROM tuatabela
WHERE [cwhere]

Aí essa variável vai ser pedida pela consulta na hora da execução. Uma vez que você acessa o sistema pelo login, a variável global [cwhere] já vai existir e vai filtrar o teu SQL na(s) tua(s) consultas, de acordo com o que desejas.

Teste e diga se funciona pra ti.

Amigo, ainda não funcionou, da uma olhada no código onValidate

$slogin = sc_sql_injection({login});
$spswd = sc_sql_injection(md5({pswd}));

$sql = “SELECT
priv_admin,
active,
name,
email
FROM sec_usuariousers
WHERE login = $slogin
AND pswd = “.$spswd.””;

sc_lookup(rs, $sql);

if(count({rs}) == 0)
{
sc_log_add(‘login Fail’, {lang_login_fail} . {login});
;
sc_error_message({lang_error_login});
}
else if({rs[0][1]} == ‘Y’)
{
$usr_login = {login};
$usr_priv_admin = ({rs[0][0]} == ‘Y’) ? TRUE : FALSE;
$usr_name = {rs[0][2]};
$usr_email = {rs[0][3]};
sc_set_global($usr_login);
sc_set_global($usr_priv_admin);
sc_set_global($usr_name);
sc_set_global($usr_email);
}
else
{
sc_error_message({lang_error_not_active});
sc_error_exit();
}
if([usr_login] = ‘admin’)
{
[cwhere] = “1=1”;
}
else
{
[cwhere] = “NomeUsuario = ‘[usr_login]’”;
}

Essa abaixo é a consulta do Grid:

SELECT
idChamado,
setorResponsavel,
desc_problema,
unidade,
local,
patrimonio_equipamento,
contato,
telefone,
ramal,
NomeUsuario,
data_abertura,
status
FROM
chamados
WHERE [cwhere]

Ele continua mostrando todos os chamados.

O teu if tá errado. Ao invés de:

if([usr_login] = ‘admin’)

Deve ser:

if([usr_login] == ‘admin’)

Resolvido, valeu amigo muito obrigado pela ajuda.

Legal. Agora edite, por gentileza o primeiro tópico e coloque ** RESOLVIDO ** no título para que outros que porventura passem pelo mesmo problema possam achar a solução.

O Kleyber, é o cara!!!

Grande Jorge… que nada… o cara é Romário, Roberto Carlos… rsrsrsrs