[resolvido] Não Imprimir campos vazios em um relatório

Moderador: Avelino Sampaio

Avatar do usuário
Moglynho
Mensagens: 31
Registrado em: 01 Mai 2016, 22:24

[resolvido] Não Imprimir campos vazios em um relatório

Mensagempor Moglynho » 25 Jun 2016, 17:31

Tentei seguir as dicas fornecidas para um tópico parecido, mas não deu certo mesmo trocando os valores.
O resultado para o campo ficar invisivel deu certo mas a linha não foi tomada pelo campo com dados.

O meu problema é: Tenho um relatório com campos em cada linha:
Nome:
Telefone:
Região:
Destino:
O que eu preciso: Imprimir todos os campos quando houverem dados
Não imprimir campos que não contenham dados, mas quando não forem impressos os campos com os dados essa linha vazia seja tomada pelo próximo campo com dados.

ex:Todos os campos com dados)
Nome: xxxxxx
Telefone:xxxxxx
Região:xxxxxxx
Destino:xxxxxxx

Ex: (Campo telefone sem dados)
Nome:xxxxxx
Região:xxxxxx
Destino:xxxxxxx
É possível?

Coloquei assim no evento ao imprimir, mas não deu certo:

Código:
Private Sub Detalhe_Print(Cancel As Integer, PrintCount As Integer)
If Me!Telefone = "" Then
Me!RtlTelefone.Visible = False
Me!Telefone.Visible = False
Me.PrintSection = False
Me.MoveLayout = False
Exit Sub
End If
End Sub


Quando não há nada no campo telefone o relatório não imprime nada a não ser o cabeçalho. :x

Agradeço mais uma vez.

Ps: Avelino Sampaio, Adquiri o Kit e fiquei tremendamente surpreso e satisfeito com a quantidade de informações e valia do produto.
Realmente é uma compra muito bem aproveitada.
Quem ainda não conhece deveria mesmo adquirir, pois não há em nenhum lugar material tão vasto e rico em informações como esse. :) :) :) :)
Última edição por Moglynho em 27 Jun 2016, 02:24, editado 1 vez no total.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Não Imprimir campos vazios em um relatório

Mensagempor Avelino Sampaio » 26 Jun 2016, 11:15

Ivan,

PrintSection e MoveLayout estão relacionados a registros e não a campos. Neste caso, terá que reposicionar os campos. Segue exemplo, com o código no evento Ao formatar da seção Detalhe.


Código:
Private Sub Detalhe_Format(Cancel As Integer, FormatCount As Integer)
Dim p, sup, j, seq$

'Cria uma matriz com as posições dos campos, em relação ao topo
sup = Split("0,603;1,296;2;2,704", ";")

' Esconde os campos e posiciona todos no topo
For j = 0 To 3
Me("c" & j).Visible = False
Me("c" & j).Top = 0 'campos
Me("r" & j).Top = 0 'rótulos
Next
' cria uma lista dos campos não nulos (seq) e seta para visíveis
For j = 0 To 3
If Not IsNull(Me("c" & j)) Then
Me("c" & j).Visible = True
seq = seq & "," & j 'lista dos campos não nulos
End If
Next
seq = Mid(seq, 2)
k = Split(seq, ",")
p = 0
'percorre a lista dos campos não nulos, reposicionando em sequencia.
For j = 0 To UBound(k)
Me("c" & k(j)).Top = sup(p) * 567
Me("r" & k(j)).Top = sup(p) * 567
p = p + 1
Next
'Ajusta a altura da seção detalhe
Me.Detalhe.Height = (3.89 - (0.6 * (4 - p))) * 567
End Sub


Nota: observe como estão os nomes dos campos (c0, c1, c2, ..) e dos rótulos (r0,r1,r2, ..), para poder usar nos laços FOR.

Bom estudo!
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Moglynho
Mensagens: 31
Registrado em: 01 Mai 2016, 22:24

Re: [resolvido]Não Imprimir campos vazios em um relatório

Mensagempor Moglynho » 27 Jun 2016, 02:26

:D :D :D
Como sempre: Resolvidissimo.

Affffff..nunca pensei que posicionar alguns campos fosse tão complicado assim. Parece até coisas de Einstein ou Pitágoras.rsrsrsrs

Mas, bateu certinho.

Obrigado!

mliell
Mensagens: 11
Registrado em: 15 Fev 2018, 19:49

Re: [resolvido] Não Imprimir campos vazios em um relatório

Mensagempor mliell » 20 Fev 2018, 20:04

Boa Tarde, muito bom esse tópico, já me ajudou muito... mas estou com um problema... vamos lá:

Preciso fazer isso com 10 caixas de texto (c0 a c9) e apenas 1 rotulo (r0), veja como modifiquei o código:

Dim p, sup, j, seq$

'Cria uma matriz com as posições dos campos, em relação ao topo
sup = Split("3,845;3,847;4,721;4,721;5,522;5,522;6,321;6,321;7,122;7,122", ";")

' Esconde os campos e posiciona todos no topo
For j = 0 To 9
Me("c" & j).Visible = False
Me("c" & j).Top = 0 'campos
Next
' cria uma lista dos campos não nulos (seq) e seta para visíveis
Me.r0.Top = 0 'rótulos
For j = 0 To 9
If Not IsNull(Me("c" & j)) Then
Me("c" & j).Visible = True
seq = seq & "," & j 'lista dos campos não nulos
End If
Next
seq = Mid(seq, 2)
k = Split(seq, ",")
p = 0
Me.r0.Top = sup(p) * 567
'percorre a lista dos campos não nulos, reposicionando em sequencia.
For j = 0 To UBound(k)
Me("c" & k(j)).Top = sup(p) * 567
p = p + 1
Next

'Ajusta a altura da seção detalhe
Me.Detalhe.Height = (3.89 - (0.6 * (4 - p))) * 567


Retirei o rótulo do FOR. Ele funcionou perfeitamente, mas quando todos os rótulos estão nulos, as linhas ainda ocupam espaço no layout. Exemplo:
Se o c0 e c1 estão preenchidos, eles aparecem normais, porém os espaços dos c2 ao c9 ficam ainda as linhas em branco.

Podem me ajudar a resolver, creio que seja algo no final do código onde reposiciona os campos..

Obrigado

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


mliell
Mensagens: 11
Registrado em: 15 Fev 2018, 19:49

Re: [resolvido] Não Imprimir campos vazios em um relatório

Mensagempor mliell » 21 Fev 2018, 16:53

Poderiam reabrir esse post? :P :roll:

Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: [resolvido] Não Imprimir campos vazios em um relatório

Mensagempor Avelino Sampaio » 21 Fev 2018, 17:52

mliel,

desculpa, não tinha percebido sua postagem. Irei analisar a questão e te dou uma posição

Aguarde
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Não Imprimir campos vazios em um relatório

Mensagempor Avelino Sampaio » 21 Fev 2018, 18:14

mliel,

teste ajustando esta linha:

Me.Detalhe.Height = (3.89 - (0.6 * (4 - p))) * 567

Para:

Me.Detalhe.Height = (7.7 - (0.6 * (10 - p))) * 567

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

mliell
Mensagens: 11
Registrado em: 15 Fev 2018, 19:49

Re: Não Imprimir campos vazios em um relatório

Mensagempor mliell » 21 Fev 2018, 19:14

Não deu certo... mas percebi que no exemplo do topico principal, só tinha esses campos... veja no anexo como está.. existem campos a cima e abaixo dos ocultos...
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.

Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Não Imprimir campos vazios em um relatório

Mensagempor Avelino Sampaio » 21 Fev 2018, 19:45

mliell,

anexe aqui o seu exemplo.

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

mliell
Mensagens: 11
Registrado em: 15 Fev 2018, 19:49

Re: Não Imprimir campos vazios em um relatório

Mensagempor mliell » 21 Fev 2018, 19:48

É um banco com 2,8mb.. posso upar em outro local?

Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Não Imprimir campos vazios em um relatório

Mensagempor Avelino Sampaio » 21 Fev 2018, 20:00

mliel

pela sua imagem o que deseja não vai ser uma tarefa facil. Não quero seu projeto inteiro. Quero apenas um BD exemplo com o relatório envolvido

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

mliell
Mensagens: 11
Registrado em: 15 Fev 2018, 19:49

Re: Não Imprimir campos vazios em um relatório

Mensagempor mliell » 21 Fev 2018, 20:09

Removi alguns registros e formulários... Segue anexo... Obrigado
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.

Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Não Imprimir campos vazios em um relatório

Mensagempor Avelino Sampaio » 21 Fev 2018, 20:17

mliell,

agora terei que sair. Amanhã, pela manhã, prometo analisar com calma.
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

mliell
Mensagens: 11
Registrado em: 15 Fev 2018, 19:49

Re: Não Imprimir campos vazios em um relatório

Mensagempor mliell » 26 Fev 2018, 16:32

ok, obrigado

mylton
Mensagens: 84
Registrado em: 18 Jul 2015, 15:00

Re: [resolvido] Não Imprimir campos vazios em um relatório

Mensagempor mylton » 26 Nov 2018, 17:01

Exemplo criado pelo Avelino encontra-se corrompido.
Acredito que seja o caminho que estou procurando.
Poderia reanexar novamente o exemplo?
Obrigado.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Relatórios”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 1 visitante