Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Criquio

[Resolvido] Como ocultar subrelatório vazio

Recommended Posts

Amigos, estou precisando de uma forcinha de vocês. É o seguinte: eu criei um sisteminha para uma oficial de justiça daqui com seis tabelas principais:

 

1 - Dados sobre pessoas processadas;

2 - Dados sobre penhoras de bens diversos;

3 - Dados sobre penhora de computadores;

4 - Dados sobre penhora de Imóveis;

5 - Dados sobre penhora de Máquinas pesadas;

6 - Dados sobre penhora de Veículos.

 

Bem, porque criei cinco tabelas referentes a penhoras? Porque cada categoria de bens trazem dados distintos. Então relacionei o campo "processo" como 'chave primária' da tabela "Processados" aos campos "processos" como 'chave estranjeira' nas tabelas de bens penhorados.

Agora eu queria fazer um relatório com cinco subrelatórios referentes aos bens, mas de maneira a exibir só o subrelatório que obtiver dados referente ao processo em questão. Por exemplo, uma pessoa pode ter apenas um automóvel penhorado, então queria que o relatório só mostrasse esses dados.

Eu fiz um processo semelhante com formulários e subformulários para lançamento dos dados, aonde coloquei 5 botões no form principal para o usuário clicar no botão referente ao bem que for lançar. Coloquei os subformulários todos em cima um do outro e defini a propriedade como oculta e no evento onClick do botão defini assim:

 

Private Sub btnBDiversos_Click()

FBensDiversos_subformulário.Visible = True

PesqFComputador_subformulário.Visible = False

PesqFImoceis_subformlulario.Visible = False

PesqFMaquinas_Subformulario.Visible = False

PesqFVeiculos_subformulario.Visible = False

End Sub

 

Fiz o mesmo para os outros botões, só mudando o True para seus devidos lugares. No caso do relatório não dá para ser assim, pois se tiver mais de um tipo de bem, eles terão que ficar em sequência. Como posso fazer para mostrar só os subrelatórios que contem dados e de forma organizada?

Desde já agradeço pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando o relatorio do access não possui dados ele chama um evento noData para você tratar.

 

Se fosse .net seria mais fácil, mas access eu não lembro como faz, lembro somente deste evento que possa te ajudar, olhou a folha de propriedades do subformulario para saber se existe algo relacionado a layout fixo.

 

Se isso não existir, existe a alternativa que eu faria..

 

não testei pois estou no onibus.

 

COlocaria um public function que seria executados a partir do evento noData do relatorio.

 

Essa function receberia como parametro o nome do subformulario que você deseja tornar invisivel , você faria a operação por fora, contudo eu acho que o espaço fica reservado no formulatio mesmo com ele invisivel , caso sim transforme a altura dele em zero.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Encontrei uma solução para o problema. Como eu percebi que, no modo de visualização de impressão, o subrelatório ajusta a sua altura de acordo o número de registros, e que os subrelatórios sem dados ficam automaticamente invisíveis, eu defini a altura dos 5 subrelatórios como zero e coloquei eles praticamente juntos logo abaixo os dados do relatório principal. Dessa forma, consegui fazer com que o relatório exiba todos os dados em sequência e de forma organizada na folha, tudo isso sem precisar de macro ou do vba.

Se alguem tiver alguma outra solução melhor, gostaria que postasse aqui.

Obrigado a todos e ao Daniel LM Costa, pois foi a partir de sua explicação que me ocorreu essa possibilidade.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fico grato em ajudar, pois nesse mundo da informática ajuda e cooperação são essenciais.

 

Pelo que você falou a solução é a melhor e a mais próxima da ideal.

 

Mas o que sempre falo com as pessoas, é tentar migrar esses sistemas em access, para uma outra linguagem, pois quando eles ficam grandes se tornam problematicos nos deixam com o risco de perda total de dados por corrupção do banco.

 

Saiba, sistemas são como crianças, eles crescem.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.