Листинг 13.3. Процедура обработки события Печать области данных
Private Sub Detaill_Print(Cancel As Integer, PrintCount As Integer)
Dim intX As Integer
Dim IngRowTotal As Long
' Вычисляет сумму по строке и добавляет ее к итоговому значению. ' по столбцу и общему итогу
If Me.PrintCount = 1 Then IngRowTotal = 0
For intX = 1 To intColumnCount – 1
' Начиная со столбца 1 (первый столбец с перекрестными
' значениями), вычисляет сумму по строке.
lngRowTotal = IngRowTotal + Me("Col" + Format(intX))
' Добавляет итоговое значение для текущего столбца.
IngRgColurenTotal(intX) = IngRgColumnTotal(intX) +_
Me ("Col" + Format(intX))
Next intX
' Заносит сумму по строке в поле в области данных.
Me("Col" + Format(intColumnCount)) = IngRowTotal
' Прибавляет сумму по строке к общему итогу.
IngReportTotal = IngReportTotal + IngRowTotal
End If
End Sub
Процедура обработки события Печать (On Print) примечания отчета должна заполнить поля примечания итоговыми значениями по столбцам из массива IngRgColumnTotal (листинг 13.4).
Листинг 13.4. Процедура обработки события Печать примечания
Private Sub ReportFooter4_Print(Cancel As Integer,_
PrintCount As Integer)
Dim intX As Integer
' Помещает суммы по столбцам в поля примечания.
For intX = 1 То intColumnCount – 1
Me("Tot" + Format(intX)) = IngRgColumnTotal(intX)
Next intX
' Помещает общий итог в поле примечания.
Me("Tot" + Format(intColumnCount)) = IngReportTotal
' Скрывает неиспользуемые поля в примечании отчета.
For intX = intColumnCount + 1 То conTotalColumns – 1
Me("Tot" + Format(intX)).Visible = False
Next intX
End Sub
Для корректной работы нужно еще добавить две небольшие процедуры в свойства отчета:
Ниже приведены обе эти процедуры (листинги 13.5 и 13.6).
Листинг 13.5. Процедура обработки события Закрытие отчета
Private Sub Report_Close() On Error Resume Next rstReport.Close End Sub
Листинг 13.6. Процедура обработки события Отсутствие данных отчета
Private Sub Report_NoData(Cancel As Integer) MsgBox "Не найдены записи, удовлетворяющие указанным_ условиям.", vbExclamation, "Записи не найдены" rstReport.Close Cancel = True End Sub