Модуль класса. Повесить событие на ОбластьДанных_Print

AlTis
Дата: 01.09.2005 09:14:32
Есть претенденты?

Обявляю:
Dim WithEvents MySection As Access.Section

Инициализирую:
Set MySection = rp.Section(0)

Ошибка:
459 Object or class does not support the set of events

Можно как-то обойти?
Фесенко Олег
Дата: 01.09.2005 09:20:02
А Section это не ActiveX объект случайно?
AlTis
Дата: 01.09.2005 09:23:00
да нет. Обычная область данных в отчёте.
Фесенко Олег
Дата: 01.09.2005 09:27:04
Просто ошибка 459 у меня как-то была, когда ссылки на библиотеку (Raference) повреждены (Missing) были. Я и подумал про это сразу.
AlTis
Дата: 01.09.2005 09:30:29
Ссылки все живые.
AlTis
Дата: 01.09.2005 10:42:00
Текст модуля класса:

Option Compare Database
Option Explicit

Dim WithEvents sc As Access.Section
Dim rp As Access.Report
Private Const cstrEventActionString As String = "[Event Procedure]"

Public Property Set Report(ByVal myRp As Access.Report)
    Set rp = myRp
    Set sc = rp.Secton(0)
    sc.OnPrint = cstrEventActionString
End Property

Private Sub sc_Print(Cancel As Integer, PrintCount As Integer)
    Debug.Print "OK!"
End Sub

Private Sub Class_Terminate()
    If Not sc Is Nothing Then Set sc = Nothing
    If Not rp Is Nothing Then Set rp = Nothing
End Su
AlTis
Дата: 01.09.2005 10:44:26
Общая задача стоит такая:
печатать шапку подчинённого отчёта на каждой новой странице основного
AlTis
Дата: 01.09.2005 11:29:00
апну первый раз.
AlTis
Дата: 01.09.2005 12:34:25
второй ап
Toking
Дата: 01.09.2005 13:08:24
Нечего апать - надо решать задачу :-)

Во-первых, у Section нет события Print (посмотрите в Object Browser), а есть свойство OnPrint

Если Вы хотите обработать это событие, то напишите код обработки в модуле соответствующего отчета типа
Private Sub PageHeaderSection_Print(Cancel As Integer, PrintCount As Integer)

End Sub

... либо напишите так:

MyRep.Section(0).OnPrint = "=MySectionPrint()"

Здесь MyRep - отчет; MySectionPrint - функция, объявленная как Public в любом модуле, для обработки события ...

Public Function MySectionPrint()
  Debug.Print "OK!"
End Function