-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Работа с заголовком и уровнями группировки при программном создании отчета

Четверг, 26 Января 2017 г. 00:31 + в цитатник
Здравствуйте!

При программном создании отчета возникли три вопроса,
но посвящать каждому отдельную тему, наверное не стоит.
Вот эти вопросы.

1-й вопрос. При создании контрола в области заголовка
Set Ctl = CreateReportControl(.Name, acLabel, acHeader, , "", 0, 0, .Width, 0.582 * TWIP)
заголовок должен уже существовать, то есть в меню Строка меню —> Вид
должен быть включен переключатель Заголовок/примечание отчета.
Для этого применяю
DoCmd.RunCommand acCmdReportHdrFtr
Но поскольку это переключатель, то применение этой команды при уже существующем заголовке
приведет к исчезновению этого заголовка.
Отсюда вопрос: Как узнать заранее, есть ли уже заголовок?
Пока делаю так:
Dim H As Single
On Error Resume Next
H = .Section(acHeader).Height
If Err.Number = 2462 Then
 DoCmd.RunCommand acCmdReportHdrFtr
End If
On Error GoTo 0
Но может есть способ лучше?

2-й вопрос. Создаю группу с заголовком
Dim varGroupLevel As Variant
varGroupLevel = CreateGroupLevel(.Name, "=True", True, False)
После этого создаю контролы в заголовке созданной группы
Set Ctl = CreateReportControl(.Name, acLabel, acGroupLevel?Header,....)
Вместо выделенного красным вопросительного знака нужно указать
номер созданного уровня группировки - от 1 до 10.
Отсюда вопрос: Как узнать номер созданного уровня группировки?
Хотя .GroupLevel это массив, но UBound(.GroupLevel) применить не удалось.
Поэтому делаю так:
Dim B As Boolean, _
    i As Byte, _
    K As Byte
On Error Resume Next
For i = 0 To 9
 B = .GroupLevel(i).GroupHeader
 If Err = 2464 Then
  Exit For
 End If
Next
On Error Resume Next
K = 2 * i + 3
Set Ctl = CreateReportControl(.Name, acLabel, K,.....)
Но хорошо ли это?
Как сделать правильнее?

3-й вопрос. Можно ли программно удалить определенный уровень группировки (группу)?
Если можно, то как?

_____________________________________________________________
Пояснения:
а) Используется запись с точками .Name/.Section/... потому, что все это находится внутри With <отчет> ..... End With.
б) Конечно, в отдельных случаях я могу и знать, есть уже заголовок или нет, как и номер уровня группировки.
Но хочется сделать в общем виде.

http://www.sql.ru/forum/1247439/rabota-s-zagolovkom-i-urovnyami-gruppirovki-pri-programmnom-sozdanii-otcheta


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку