Привет: я понимаю, что у вас есть ярлыки.Поскольку ярлыки не могут сжиматься, вам нужно написать код.
Динамическая игра с отчетами - сложная задача.При изменении высоты или ширины раздела все элементы управления должны оставаться внутри новой области, иначе у вас возникнут проблемы.Когда вы перемещаете элемент управления, он должен оставаться внутри области раздела, иначе у вас возникнут проблемы.Кроме того, вы должны отключить Autoshrink для раздела.
Теперь это пример.Вы должны изменить его в соответствии с вашими требованиями.Вот код отчета:
Option Compare Database
Option Explicit
Private twipsPerLine As Integer ' The height of a line in your report
Private detailHeight As Integer ' The height of your detail section
Private vPos As Integer ' The vertical position of the control
'following the one you want to hide
Private Sub Report_Open(Cancel As Integer)
' Set the values
vPos = data_2.Top
twipsPerLine = data_2.Top - data_1.Top
detailHeight = Me.Detail.Height
End Sub
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If (IsNull(Me.data_1.Value)) Then
' First, you hide the controls
Me.data_1.Visible = False
Me.data_1_label.Visible = False
' Then, you set the position of the rest of the controls (up)
data_2_label.Move data_2_label.Left, vPos - twipsPerLine
data_2.Move data_2.Left, vPos - twipsPerLine
' Finally, you shrink the detail section height
Me.Detail.Height = detailHeight - twipsPerLine
Else
' First, you show the controls
Me.data_1.Visible = True
Me.data_1_label.Visible = True
' Then, you reset the section height
Me.Detail.Height = detailHeight
' Finally, you reset the position of the rest of the controls
data_2_label.Move data_2_label.Left, vPos
data_2.Move data_2.Left, vPos
End If
End Sub
Это приближение дает вам полный контроль над отчетом и работает, даже если у вас есть надписи, изображения или что-то еще.