Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde Pessoal,
Estou com um problema que não consigo identificar:
Tenho um cenário onde faço a contagem dos dias úteis do mês atual: (no caso desse mês coloquei todos como úteis)
A Fórmula é:
=COUNT(TOTAL{1<ANO={$(#AnoAtual)}, MES={$(#MesAtual)}>} DIA_UTIL)
O problema é o seguinte:
Como uso section access no cenário, quando aceso com ADMIN a contagem retorna 31 que está correto
Quando acesso com CLIENTE8 ou CLIENTE9 a contagem resulta em 20.
Alguém poderia me explicar onde estou errando?
Abaixo é a minha tabela de section Access:
ACCESS | USERID | PASSWORD | CD_CLIENTE_DE_BI |
ADMIN | ADMIN | 123456789 | |
USER | CLIENTE8 | 123123 | 8 |
USER | CLIENTE9 | 123123 | 9 |
A segunda tabela nem precisa, mas de qualquer forma da certo também
Provavelmente você não esteja errrando
A exclusão por apenas o campo CD_CLIENTE_DE_BI deve estar restringindo apenas 20.
Teste simples, faça login como Admin, e faça uma seleção no campo CD_CLIENTE_DE_BI para 8 ou 9 e veja o resultado em um textbox por exemplo
Eu já fiz esses testes, inclusive comentei a parte de carrega os dados do cliente 8 e fiz uma recarga só do cliente 9.
Além disso, criei uma chave para que cada cliente tenha seu calendário.
Rodrigo, a sua restrição deve estar removendo os valores desses dias.
Por favor, tire um print da estrutura das suas tabelas.
Segue em anexo a estrutura.
o campo de restrição é o que está marcado em vermelho.
Na abertura do post eu coloque CD_CLIENTE_DE_BI, mas é aquele o nome certo.
Provavelmente o que ocorre é que esses clientes não possuem movimentação para todas as datas do mês, desta forma essa restrição afeta a quantidade de registros da sua tabela CALENDARIO.
Para contornar, você pode calcular a quantidade de dias úteis no script, colocar essa informação dentro de uma coluna nesta tabela (mesmo que essa informação se repita para cada dia do mês) .
Mas se não possuem movimentação, porque se eu logar com o usuário admin não tem esse problema?
Sendo que minha formula tem aquele "1" que ignora seleções e o campo ANO e MES e DIA_UTIL estão no calendário que gera dados até o final do mês para todos os dias e as variáveis eu defini assim:
LET MesAtual=NUM(MONTH(TODAY()));
LET AnoAtual=YEAR(TODAY());
=COUNT(TOTAL{1<ANO={$(#AnoAtual)}, MES={$(#MesAtual)}>} DIA_UTIL)
Porque um Section Access equivale à uma seleção 'forçada' para os código 8 e 9.
Para aquele usuário, todos os registros que não hajam correspondência, não são considerados, não adianta usar o
COUNT(TOTAL{1
O seu usuário ADMIN não esta sofrendo nenhum redução de dados, logo a tabela CALENDARIO estará completa e o seu COUNT vai funcionar.
Faça como te falei, calculei essa quantidade no script, mais ou menos dessa forma:
LEFT JOIN (CALENDARIO)
LOAD
ANOMES,
COUNT( if( DIA_UTIL = 'S', DATA)) as QTD_DIA_UTIL
RESIDENT CALENDARIO
GROUP BY ANOMES;
No gráfico basta fazer um SUM(QTD_DIA_UTIL)
Eu não seu se é a maneira mas correta, mas fiz da seguinte forma:
Liguei ao calendário os dias úteis do mês e os dias úteis até a data corrente do mês.
No script ficou assim:
DIAS_UTEIS:
LOAD MES_ANO,
COUNT( if( DIA_UTIL = 1, DATA)) as QTD_DIA_UTIL
Resident CALENDARIO
GROUP BY MES_ANO;
DIAS_UTEIS_ATUAL:
LOAD MES_ANO,
COUNT( if( DIA_UTIL = 1, DATA)) as QTD_DIA_UTIL_ATUAL
Resident CALENDARIO
WHERE ANO = YEAR(Today())
AND MES = MONTH(Today())
AND DIA <= DAY(Today())
GROUP BY MES_ANO;
As formulas ficaram assim:
SUM({<ANO={$(#AnoAtual)}, MES={$(#MesAtual)}>} QTD_DIA_UTIL)
SUM({<ANO={$(#AnoAtual)}, MES={$(#MesAtual)}>} QTD_DIA_UTIL_ATUAL)
O resultado final deu certo.