|
|
|
| нарыл код, для его вызова нужно в каждом разделе отчета сделать следующую функцию
Private Sub ВерхнийКолонтитул_Format(Cancel As Integer, FormatCount As Integer)
nextTOP = nextTOP + section_to_HTML(Section("ВерхнийКолонтитул"), n, nextTOP)
End Sub
|
вопрос можно ли обойти написание ручками название раздела каждый раз - Section("ВерхнийКолонтитул") - как получить имя раздела отчета где происходт событие (т.е.находтся код)? | |
|
| |
|
|
|
| Можно по номеру в коллекции:
Section(0)-область данных, например.
Можно прописать на открытии отчета :
Private Sub Report_Open(Cancel As Integer)
'Здесь убрал
Dim i As Integer
With Me
For i = 0 To Максимум секций в отчете' Здесь подправил.
.Section(i).OnFormat = "=funFormat(Report, " & i & ")"
Next i
End With
End Sub
|
Или вызывать внешнюю функцию, которая сделает то-же самое.
А в общем модуле что-то типа:
Public Function funFormat(rpt As Report, i As Integer)
Debug.Print "formatting " & rpt.Name & " Section " & rpt.Section(i).Name
End Function
|
В итоге: в фунции funFormat мы будем иметь и ссылку на отчет, и индекс форматируемой секции.
То есть, не нужно в каждой секции каждого отчета прописывать код. | |
|
| |
|
|
|
| блин как всегда все просто и гениально. в который раз понимаю что нужно уйти в отпуск и 24 часа в сутки учить и учить VB.
п.с.
For i = 0 To 8 ' 8-это максимум
|
- на проверку догнал до 14 секций, а при цикле i больше нужного кол-ва - никакой ошибки не происходит.
п.с.с. -
http://msa.dimsign.ru/index.php?type=103&urok=35
|
целиком про мну | |
|
| |
|
|
|
|
Угу, я не дочитал Help до конца.
Ну я тоже типа подписался.
В отчетах можно:
Private Sub Report_Open(Cancel As Integer)
funSetOnFormat Me
End Sub
|
Во внешнем модуле для всех отчетов типа такого:
Public Function funSetOnFormat(rpt As Report)
On Error Resume Next
Dim i As Integer
Err.Clear
With rpt
Do While Err.Number = 0
.Section(i).OnFormat = "=funFormat(Report, " & i & ")"
i = i + 1
Loop
End With
Err.Clear
End Function
|
| |
|
| |