Pessoal, tudo bem? Sempre recorro a este fórum para solucionar dúvidas de programação em Access. Atualmente precisei de um método para colocar os campos de uma seção do relatório na mesma altura que um campo expansível. O problema é que todos os métodos pesquisados ou não davam certo ou utilizavam o recurso nativo de Layout Tabela. Bom, este método do layout tira a flexibilidade do relatório, uma vez que mesmo que tenhamos zerado a distância entre os campos, ele sempre ficava com um pequeno espaço entre eles. E isso me irrita, pois, deixa os relatórios feios. Encontrei um método que resolve esta questão e gostaria de deixar registrado aqui para quem precisar. Esta é minha contribuição após ser ajudado tantas vezes por esta equipe. O mérito vai para o usuário "dhookom" e o link original é:
answers.microsoft.com/en-us/msoffice/forum/msoffice_access-mso_winother/making-all-fields-in-a-reports-detail-section-grow/ea8c077d-17b8-4947-bd5d-a18a98a12ea7
Copiar link e colar no browser
Vamos lá:
Basta colar o código abaixo no evento "AO IMPRIMIR" da seção que quiser, tomando o cuidado de substituir "Me.Section(0)" pelo endereço correto da seção que deseja. O código abaixo pode ser adaptado para sua situação. Pode-se, por exemplo, eliminar a faixa amarela que é criada. Abraços.
answers.microsoft.com/en-us/msoffice/forum/msoffice_access-mso_winother/making-all-fields-in-a-reports-detail-section-grow/ea8c077d-17b8-4947-bd5d-a18a98a12ea7
Copiar link e colar no browser
Vamos lá:
Basta colar o código abaixo no evento "AO IMPRIMIR" da seção que quiser, tomando o cuidado de substituir "Me.Section(0)" pelo endereço correto da seção que deseja. O código abaixo pode ser adaptado para sua situação. Pode-se, por exemplo, eliminar a faixa amarela que é criada. Abraços.
- Código:
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
Dim intMaxHeight As Integer
Dim ctl As Control
Dim lngHilite As Long
lngHilite = 10092543 'pale yellow
'Find highest control in Detail section _
that has a tag property of "Border"
For Each ctl In Me.Section(0).Controls
If ctl.Tag = "Border" Then
If ctl.Height > intMaxHeight Then
intMaxHeight = ctl.Height
End If
End If
Next
'Draw a box around each control in Detail _
that has a tag property of "Border"
For Each ctl In Me.Section(0).Controls
If ctl.Tag = "Border" Then
'make the background pale yellow
Me.Line (ctl.Left, ctl.Top)- _
Step(ctl.Width, intMaxHeight), lngHilite, BF
Me.Line (ctl.Left, ctl.Top)- _
Step(ctl.Width, intMaxHeight), vbBlack, B
End If
Next
End Sub