что не достигнут конец набора
Листинг 13.2. Процедура обработки события Форматирование области данных 1
Private Sub Detaill_Format(Cancel As Integer,_ FormatCount As Integer)
' Вводит значения в поля и скрывает пустые поля.
Dim intX As Integer
' Проверяет, что не достигнут конец набора записей.
If Not rstReport.EOF Then
'Помещает значения из набора записей в поля области данных
If Me.FormatCount = 1 Then
For intX = 0 To intColumnCount - 1
' Преобразует пустые значения в 0.
Me ("Col" + Format(intX)} =_
xtabCnulls(rstReport(intX))
Next intX
' Скрывает неиспользуемые поля в области данных.
For intX = intColumnCount + 1 То conTotalColumns - 1
Me("Col" + Format(intX)).Visible = False Next intX
' Переходит к следующей записи в наборе. rstReport.Move
Next
End If
End If
End Sub
Свойство FormatCount отчета содержит значение, равное количеству столбцов для форматирования, поэтому в процедуре проверяется это свойство, и присвоение значений полям в области данных выполняется, только если это значение не 0. В процедуре используется также функция xtabCnulls, преобразующая пустое значение в 0.
Для события Печать (On Print) области данных отчета нужно создать процедуру, которая бы суммировала значения по строке отчета, выводила полученное значение в последнем столбце и, кроме того, добавляла эту сумму в массив итоговых значений по столбцам (листинг 13.3). Массив итоговых значений по столбцам IngRgColumnTotal и переменная IngReportTotal, определяющая общий итог, должны быть описаны на уровне модуля. Кроме того, они должны быть инициализированы, т. е. им нужно присвоить начальные значения 0. Это можно сделать в процедуре обработки события Загрузка (On Load) отчета.