... Pague apenas R$67,00 uma única vez e tenha acesso por 1 ano aos vídeos e arquivos exemplos do site ...

Clique aqui e obtenha mais detalhes.


Criando linhas em um relatório, de forma dinâmica

No exemplo deste meu artigo, ofereci uma solução para criar um relatório pautado.  No projeto, o número de linhas a serem exibidas, depende do número de registros apresentados, podendo chegar  até 23 linhas.  Por exemplo: ao selecionar 5 registros, obtenho apenas 18 linhas exibidas no relatório (23-5=18). Observe na imagem abaixo: 

Linhas em relatório

A técnica empregada neste projeto foi a de criar 23 linhas sobrepostas, posicionadas no rodapé do relatório.  Veja:

Linhas sobrepostas

O código utilizado no relatório tem a função de reposicionar as linhas, em alturas eqüidistantes(regulares), criando assim, o relatório pautado.

Private Sub RodapéDoRelatório_Format(Cancel As Integer, FormatCount As Integer)
Dim j As Byte, K As Single
K = 0.6 * 567
If rs > 24 Then Exit Sub
'-------------------------------------------
'reposicionando as linhas
'-------------------------------------------
For j = 1 To (24 - rs)
    Me.Controls("Linha" & (j + 1)).Top = K + (K * j)
Next
'---------------------------------------------------------------------------
'rs é zerado para não acumular valor, para o caso de uma nova solicitação 
'de impressão
'---------------------------------------------------------------------------
rs = 0
End Sub

Nota:  As propriedades pode ampliar e pode reduzir da seção rodapé do relatório foram configuradas para SIM.

O uso do comando LINE

Em substituição as linhas sobrepostas, podemos utilizar o comando LINE.  Com este comando somos capazes de criar retângulos e linhas nas dimensões e posições desejadas.   Aqui é possível conferir no meu artigo, a explicação em detalhes sobre o comando LINE

Observe abaixo, o código modificado, introduzindo o comando LINE.

Private Sub RodapéDoRelatório_Format(Cancel As Integer, FormatCount As Integer)
Dim j As Byte, K As Single, q As Byte
K = 0.6 * 567
If rs > 24 Then Exit Sub
'-----------------------------------------------------------------------------------------
'Definindo a altura do controle linha
'Necessário para expandir a área do rodapé, a fim de comportar as linhas criadas pelo LINE
'-----------------------------------------------------------------------------------------
Me.Linha.Height = K * (24 - rs)
'----------------------------------------
'Criando as linhas com o controle LINE
'----------------------------------------
For j = 1 To (24 - rs)
    Me.Line (0, K * (1 + j))-(567 * 15, K * (1 + j) + 10), vbBlack, BF
Next
rs = 0
End Sub

Observe a seguir que tive que usar o artifício de inserir um controle Linha, no sentido vertical, com o objetivo de ampliar dinamicamente a área do rodapé,  pois o comando LINE não afeta esta ampliação.

Controle linha

No exemplo oferecido, a propriedade visible do controle linha está configurada para false.

Download

Baixe aqui o exemplo para você estudar na prática.

Artigo relacionado

E aqui um exemplo prático, do uso do LINE para criação de código de barras para boletos bancários.

Desafio 

criar uma grade conforme imagem abaixo,  utilizando apenas o comando LINE:

Grade quadriculada

 

Bom estudo!


 

 


3 comentário(s)

Marcelo David   22/09/2014 13:52:31

Muito bom! Mais uma vez de parabêns!

Marcio Melo - RJ   23/09/2014 00:50:59

Quando se acha que está tudo perfeito... você ainda consegue melhorar ou dar uma outra forma de fazer as linhas... show...

Muito obrigado, por todas as atualizações que me enviou ao longo desses anos... desde de 2011, venho acompanhando... super feliz e satisfeito... vou praticar o exercício proposto...

Forte abraço!

Idiframk Silva   24/09/2014 07:11:13

Muito Legal seu Trabalho, admiro tanto quanto estou aprendendo...


Valeu Abraço!


Envie seu comentário: