Программирование на Visual Basic | Microsoft Access. Переменная высота строк в отчете

В этом разделе сайта находятся примеры из сборника программ "Архив файлов на Microsoft Access". В нем рассказывается о программировании форм, отчетов, таблиц и других объектов. Используйте этот архив для изучения работы с приложением Microsoft Office Access и программированием на Visual Basic for Application. Тем кто уже знаком с VBA, используйте поиск для нахождения кодов. Наберите, например, DAO, ADO, Recordset и найдете нужную ссылку для решения проблемы с программированием

Microsoft Access. Переменная высота строк в отчете

09. Программа построения табличных отчетов от Microsoft составлена так, что при изменении данных (1 строка, 2 строки) они могут не отображаться, т.к. в конструкторе эта высота уазывается жестко. Этот метод позволяет Вам обойти недостаток модуля отчетов от Microsoft и строить таблицы разной высоты.

Private Sub ОбластьДанных_Print(Cancel As Integer, PrintCount As Integer)
Dim h As Single
    h = funGetHeight(Me.Section(acDetail)) 'Опредеяем высоту строки
    funDrawBox Me, h, 1 'Оформляем секцию с толщиной линий = 1
End Sub

'===============================================================
' Расчет высоты строки в секции в зависимости от форматирования
' поля отчета, например, TextBox
'
Private Function funGetHeight(sec As Section) As Single
Dim c As Control
     funGetHeight = 0 'назначаем высоту ячейки
     For Each c In sec.Controls 'Просматриваем все поля отчета
         If funGetHeight  c.Height Then _
            funGetHeight = c.Height 'Возвращаем максимальную высоту
     Next c 'Следующее поле
End Function

'===============================================================
' Перед началом печати рисуем для каждого поля прямоугольник
'
Private Sub funDrawBox(rpt As Report, h As Single, w As Integer)
Dim c As Control
     rpt.DrawWidth = w 'Толщина линии
     'Красный цвет прямоугольника
     rpt.ForeColor = RGB(255, 0, 0) 'RED, GREEN, BLUE
     'Просматриваем все поля отчета
     For Each c In rpt.Section(acDetail).Controls
         rpt.Line (c.Left, c.Top)-(c.Left + c.width, h), , B 'Прямоугольник
     Next c
End Sub

Добавить комментарий

Loading