Настольная СУБД Access 2002

         

что не достигнут конец набора



Листинг 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) отчета.

Содержание раздела