Usuário com melhor resposta
Suppress do Crystal no Reporting Server

Pergunta
-
Boa tarde pessoal,
Eu antes usava o Crystal e agora estou usando o RS na empresa onde trabalho.
Estou com uma dúvida referente à função Hidden do RS.
Exemplo:
Tenho o seguinte relatporio agrupado por Empresa e Filial:
Empresa
Filial
Details
Existem algumas empresa que não possuem filial, daí fui no grupo filial e na opção visibility/expression, coloquei a seguinte empressão: =IsNothing(Fields!Filial.Value). Até aí tudo bem.
No entanto, caso eu tenho 100 empresas e só uma delas não possui filial, o grupo filial Desaparece para todas.
Existe alguma forma de se fazer ele desaparecer apenas para as Empresa que não possuem filial?
Para o relatório ficar +- dessa forma?
Empresa 1 ( empresa que possui filial )
Filial da empresa 1
detalhes da empresa 1
Empresa 2 ( sem filial )
detalhes da empresa 2
No Crystal, existem duas funções desse tipo:
Suppress: suprime apenas os registros das empresas sem filial
Hidden: Esconde o grupo para todas as empresas
Pelo que vi o RS só possui a função de Hidden.
Obrigado a todos
Respostas
-
Demeterio,
Para ter o resultado da forma que você quer adicione uma table, crie um parent group por Empresa, adicione o campo empresa na linha cabeçalho desse grupo.
Crie um segundo grupo (filho do primeiro) com a group expression no campo Filial, adicione o campo filial na linha cabeçalho do grupo. Ao invez de usar a expressao de visibilidade no grupo, use nessa linha de cabeçalho do grupo (se voce ocultar o grupo, ele deve ocultar as linhas dos grupos filhos também, e nao é o que voce deseja).
E na linha de detalhe coloque as observacoes da empresa.
Isso deve dar exatamente o resultado que voce colocou no post, se voce está tendo as linhas de todos os registros ocultados pode ser que a expressão esteja em um escopo diferente no seu relatório.
Att
Boreki
Todas as Respostas
-
Demetrio,
Neste caso, no altere a expressão
Code Snippet=IsNothing(Fields!Filial.Value).
para
Code Snippet=Count(Fields!Filial.Value, "dsEmpresas") > 0dsEmpresas = nome do seu dataset utilizado para fazer o designer do relatório.
Ou seja, exibir o grupo de empresa somente se exibir alguma filial associada.
Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado. -
Oi Laércio,
Obrigado pela atenção.
Troquei =IsNothing(Fields!Filial.Value) por =Count(Fields!Filial.Value, "dsEmpresas") > 0, no entanto,
ele faz a mesma coisa. Caso exista alguma empresa que não tenha filial, o detail desaparece para todas as empresas.
É como se esconde-se o detail de todo o relatório. Mas o que eu quero é suprimir apenas os details das empresas que não possuem filial.
E o que eu quero é exibir sim a empresa. tipo quando a empresa tiver filial exibir assim:
Empresa
Filial
detail
e quando não tiver filial exibir assim:
Empresa
detail
Entendeu?
No Crystal faço isso através da opção suppress.
Quanto ao que você disse:
"Ou seja, exibir o grupo de empresa somente se exibir alguma filial associada"
Eu quero sim exibir todas as emrpesas independente de existir filial ou não quero mostrar as empresas e os details.
Grato
-
Demeterio,
Acho que você deve tentar fazer algo como recomendado pelo Laercio, só precisa alterar duas coisinhas:
-
A ordem da equação tem que ser invertida, você quer 'esconder' o agrupamento quando o número de filiais for zero. E não quando for maior que zero.
-
E o Escopo do Count não deve ser o DataSet, mas sim o nome do grupo de empresas para considerar somente as filiais da empresa agrupada
Att
Boreki
-
-
Boreki,
Obrigado pela atenção. No entanto, a solução que você propôs não resolve.
No grupo filiais Troquei =Count(Fields!Filial.Value, "dsEmpresas") > 0 por =Count(Fields!Filial.Value, "nomeGrupoEmpresa") = 0
Ele 'esconde', mas se houver alguma empresa qua não tenha filial ( satisfazendo a cláusula acima ), ele esconde o grupo para todas as empresas. e não exibe os details das empresas que possuem filiais.
Exemplo
É como se ele fizesse assim: Se no meio de 100 empresas houver apenas uma que não tenha filial, ele esconde o grupo filial para todas elas.
Eu queria mesmo era mostrar assim ( para as empresas que possuem filial ):
Empresa
Filial
Details
E assim para as que não possuem:
Empresa
Filial
Vale lembrar que empresa é o group 1, filial o group 2 e detail é o group details
Ou seja, eu queria que quando existisse filial ele exeibisse a empresa, a filial e os detalhes, e quando não existisse filial ele exibisse a empresa, ocultasse a filial mas exibisse os details.
Eu consigo fazer isso no Crystal Reports através da opção Suppress. Só não sei se isso é possível no RS
Fico muito agradecido com a atenção de vocês dois.
Abraços
-
-
Oi Boreki,
Desculpa pela demora. É que estou sem internet em casa. Segue abaixo como os dados estão vindo do dataset:
Nome da empresa Filial Detalhe
Empresa1 NULL Observações sobre a empresa
Empresa2 NULL Observações sobre a empresa
Empresa3 Filial1 Observações sobre a empresa
Empresa4 NULL Observações sobre a empresa
Empresa5 Filial3 Observações sobre a empresaNão existe problema quanto aos dados. Até pq este mesmo relatório existe no Crystal Reports e faz o que estou querendo.
Por exemplo. Se eu colocar algum c´´odigo para suprimir as filiais da empresa que tenha filial null, todas as filiais não aparecem mais no relatório.
Muito obrigado pela atenção.
Abraços
Demétrio
-
Demeterio,
Para ter o resultado da forma que você quer adicione uma table, crie um parent group por Empresa, adicione o campo empresa na linha cabeçalho desse grupo.
Crie um segundo grupo (filho do primeiro) com a group expression no campo Filial, adicione o campo filial na linha cabeçalho do grupo. Ao invez de usar a expressao de visibilidade no grupo, use nessa linha de cabeçalho do grupo (se voce ocultar o grupo, ele deve ocultar as linhas dos grupos filhos também, e nao é o que voce deseja).
E na linha de detalhe coloque as observacoes da empresa.
Isso deve dar exatamente o resultado que voce colocou no post, se voce está tendo as linhas de todos os registros ocultados pode ser que a expressão esteja em um escopo diferente no seu relatório.
Att
Boreki
-