Usuário com melhor resposta
Não mostrar subrelatorio que não tenha dados

Pergunta
-
Boa tarde,
Não consegui fazer com que subrelatórios que não apresentem dados no retorno da consulta não sejam mostrados.
Achei um campo dentro da configuração do relatório que faz com que o relatório não apareça, mas a secção onde esta o subrelatório ainda aparece e fica um espaço em branco entre um subrelatório e outro.
Tem como fazer ate com que esta secção desapareça??
Obrigado
Respostas
-
Opa!,
vamos tentar assim:
Junior,
No relatório principal (lista de países), eu tenho a lista de países no item “Section (Details a)”, adiciono um novo item ao relatório “Section (Details b)”, e adicione um sub-relatório para exibir os respectivos moradores.
Problema: Como exibir apenas os países com moradores cadastrados? Ou seja, o sub-relatório (de moradores) somente será visualizado caso exista pelo 1 morador cadastro para o pais corrente.
Neste caso, preciso criar um identificador no relatório principal para fazer um supress no item onde está localizado o sub-relatório “Section (Details b)” e por isso que eu criei uma coluna no SQL principal chamado SumCustomers, que contem o total de moradores por pais.
Com isso eu tenho um ID para criar o supress no sub-relatório (a partir do relatório principal).
No relatório principal, clico com o botão da direita na “Section (Details b)”, ou seja , no item do sub-relatório, seleciono a opção “section expert”, clico no botão X-2 (ao lado do checkbox Supress (No Drill-Down), e adiciono a seguinte fórmula:
{Country.SumCustomers }=0
Caso o valor do campo pais seja igual a 0, não exibir a seção no relatório.
Era essa a dúvida?
Todas as Respostas
-
-
-
Junior,
Um exemplo de como resolver esse problema no SQL ou no "supress" do Crystal Reports.
Neste exemplo, vou "criar" um relatório de paises e seus respectivos moradores (com dados de endereço, telefone (neste caso usando um sub-report).
Layout do relatório:Brazil
José E Saraiva, city 001, ...
Michael L. Rothkugel, city 001, ...
Pablo Rovira Diez, city 001, ...EUA
Scott M. Rodgers, city 001, ...
Raymond Sam, city 001, ...
Minha estrutura (tabelas):tabela: Country
CountryID
CountryName
tabela: Customer
CustomerID
CustomerName
EmailAddress
City
StateProvinceName
PostalCode
CountryID
Problema: Preciso exibir APENAS os paises com moradores cadastrados (como resolver no próprio SQL):Code Snippetselect c.CountryID,
c.CountryName,
tCustomers.SumCustomers
from Country c inner join (select tc.CountryID, count(tcr.CustomerID) as SumCustomers
from country tc
left join customer tcr on tc.CountryID = tcr.CountryID
group by tc.CountryID ) tCustomers on c.CountryID = tCustomers.CountryID
where SumCustomers >0um SQL mais simples (mais como o mesmo resultado)
Code Snippetselect
CountryID,CountryName,
SumCustomers
from
(select
c.CountryID,c.CountryName,
(select count(tcr.CustomerID)
from customer tcr
where tcr.CountryID = c.CountryID) as SumCustomers
from Country c ) as tmp
where tmp.SumCustomers >0
CountryID CountryName SumCustomers
AU Australia 3591
CA Canada 1571
DE Germany 1780
FR France 1810
GB United Kingdom 1913
US United States 7843
Esse SQL eu vou utilizar para fazer a construção do relatório principal (ou seja, criei um campo "SumCustomers", para identificar se existem dados para o país a ser impresso) . Além disso, com menos dados, o relatório será exibido bem mais rápido.Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado. -
E ai Laercio, blz??
Fiquei na duvida:
Como sua solução irá influenciar nos detalhes do relatório principal?? Ou seja não ha dados para serem exibidos no subrelatório, mas somente a sql desativa a area de detalhes onde esta o subrelatório sem dados??
Obrigado
-
Opa!,
vamos tentar assim:
Junior,
No relatório principal (lista de países), eu tenho a lista de países no item “Section (Details a)”, adiciono um novo item ao relatório “Section (Details b)”, e adicione um sub-relatório para exibir os respectivos moradores.
Problema: Como exibir apenas os países com moradores cadastrados? Ou seja, o sub-relatório (de moradores) somente será visualizado caso exista pelo 1 morador cadastro para o pais corrente.
Neste caso, preciso criar um identificador no relatório principal para fazer um supress no item onde está localizado o sub-relatório “Section (Details b)” e por isso que eu criei uma coluna no SQL principal chamado SumCustomers, que contem o total de moradores por pais.
Com isso eu tenho um ID para criar o supress no sub-relatório (a partir do relatório principal).
No relatório principal, clico com o botão da direita na “Section (Details b)”, ou seja , no item do sub-relatório, seleciono a opção “section expert”, clico no botão X-2 (ao lado do checkbox Supress (No Drill-Down), e adiciono a seguinte fórmula:
{Country.SumCustomers }=0
Caso o valor do campo pais seja igual a 0, não exibir a seção no relatório.
Era essa a dúvida?
-
-
-
-
-
Junior,
Valeu! É muito gratificante pode ajudar a comunidade MSDN!
No final de semana eu vou terminar o 3 vídeo (e vou colocar esse exemplo) uma vez que essa parte de sub-relatório não é facil de resolver.
Assim que eu terminar e o mesmo for aprovado eu mando um e-mail para vc.
E precisando é só postar!
-