10 Replies Latest reply: May 27, 2015 8:23 PM by Yuri Nicolett RSS

    Section Access

      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:

          

      ACCESSUSERIDPASSWORDCD_CLIENTE_DE_BI
      ADMINADMIN123456789
      USERCLIENTE81231238
      USERCLIENTE91231239
        • Re: Section Access
          Clever Anjos

          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

            • Re: Section Access

              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.

                • Re: Section Access
                  Yuri Nicolett

                  Rodrigo, a sua restrição deve estar removendo os valores desses dias.

                  Por favor, tire um print da estrutura das suas tabelas.

                    • Re: Section Access

                      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.

                        • Re: Section Access
                          Yuri Nicolett

                          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) .

                            • Re: Section Access

                              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)

                                • Re: Section Access
                                  Clever Anjos

                                  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

                                  • Re: Section Access
                                    Yuri Nicolett

                                    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)

                                      • Re: Section Access

                                        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.