powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Работа с заголовком и уровнями группировки при программном создании отчета
19 сообщений из 19, страница 1 из 1
Работа с заголовком и уровнями группировки при программном создании отчета
    #39391689
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

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

1-й вопрос. При создании контрола в области заголовка
Код: vbnet
1.
Set Ctl = CreateReportControl(.Name, acLabel, acHeader, , "", 0, 0, .Width, 0.582 * TWIP)

заголовок должен уже существовать, то есть в меню Строка меню —> Вид
должен быть включен переключатель Заголовок/примечание отчета .
Для этого применяю
Код: vbnet
1.
DoCmd.RunCommand acCmdReportHdrFtr

Но поскольку это переключатель, то применение этой команды при уже существующем заголовке
приведет к исчезновению этого заголовка.
Отсюда вопрос: Как узнать заранее, есть ли уже заголовок?
Пока делаю так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
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-й вопрос. Создаю группу с заголовком
Код: vbnet
1.
2.
Dim varGroupLevel As Variant
varGroupLevel = CreateGroupLevel(.Name, "=True", True, False)

После этого создаю контролы в заголовке созданной группы
Код: vbnet
1.
Set Ctl = CreateReportControl(.Name, acLabel, acGroupLevel?Header,....)

Вместо выделенного красным вопросительного знака нужно указать
номер созданного уровня группировки - от 1 до 10.
Отсюда вопрос: Как узнать номер созданного уровня группировки?
Хотя .GroupLevel это массив, но UBound(.GroupLevel) применить не удалось.
Поэтому делаю так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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.
б) Конечно, в отдельных случаях я могу и знать, есть уже заголовок или нет, как и номер уровня группировки.
Но хочется сделать в общем виде.
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392457
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по п.2.

Функция CreateGroupLevel возвращает указатель (Integer), указывающий на позицию созданного уровня группировки.
Для первого = 0 и т.д.
5 первых позиций Section от 0 до 4 зарезервированы для ...

Соответственно, первый из добавленных GroupLevel попадет в Section в позицию с номером 5.
Далее простая математика.
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392462
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнение/поправка:

Predeclared...
Соответственно, Header первой из добавленных GroupLevel попадет в Section в позицию с номером 5,
Footer в позицию с номером 6.
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392466
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared,

Проверила - абсолютно точно.
То есть, в выражении
Код: sql
1.
varGroupLevel = CreateGroupLevel(.Name, "=True", True, False)

значение varGroupLevel и есть то, что мне нужно.

А уж "простую математику" (скорее, арифметику) я уже и так применяю, в примере есть.)))
Теперь становится так:
Код: vbnet
1.
K = 2 * varGroupLevel + 3


Отлично! Спасибо большое!
На вопрос номер два ответ получен!
Спасибо еще раз!
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392468
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PredeclaredДополнение/поправка:

Predeclared...
Соответственно, Header первой из добавленных GroupLevel попадет в Section в позицию с номером 5,
Footer в позицию с номером 6.Я все поняла, как надо, и без поправки.)))
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392469
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle... Я все поняла, как надо, и без поправки.

Молодец!

Но кто-то другой мог и не понять. :)
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392472
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared,

А программное удаление групп возможно (вопрос три)?
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392476
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создание заголовка работает в базе, в которой можно отчет открыть в конструкторе. у юзера же база в лучшем случае в рантайме.
Потому в общем случае в отчете заголовок лучше должен быть, а потом если нужно спрятать - прячете - Me.Section(acGroupLevel1Header).Visible = False
аналогично с группами -они должны быть - настраивается ControlSource, поля в группе, .visible-true - если нет-то ControlSource="" и пр., и .visible=false
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392481
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про заголовок Me.Section(acHeader).Visible = False-конечно же
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392489
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko,

Да нет, Вы не о том совсем.)))
Visible - это управление выводом на экран/бумагу при предварительном просмотре/печати.

И при чем здесь юзер?
Мои пользователи исходники от меня не получают, еще не хватало им режима конструктора.)))
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392493
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko... у юзера же ...

А про работу с отчетом у юзера тут никто и не говорил.
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392517
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle, создание и удаление разделов возможно только в режиме конструктора.
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392519
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko, что заставляет Вас думать, что я об этом не знаю?
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392522
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__MichellePredeclared,
.....
.....Теперь становится так:
Код: vbnet
1.
K = 2 * varGroupLevel + 3

А тут уже у меня неточность. Нужно так:
Код: vbnet
1.
K = 2 * (varGroupLevel + 1) + 3
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392531
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle"Как узнать заранее, есть ли уже заголовок?"
при создании отчета вновь Вы его создаете, а поскольку есть этот вопрос, и все делается программно, посчитал что все таки речь идет об управлении ранее созданным отчетом.
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392538
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko__Michelle"Как узнать заранее, есть ли уже заголовок?"
при создании отчета вновь Вы его создаете, а поскольку есть этот вопрос, и все делается программно, посчитал что все таки речь идет об управлении ранее созданным отчетом.О Боги!
Простейший пример.
Допустим, идет процесс отладки процедуры,
создающей заголовок отчета и заполняющей этот заголовок контролами.
Процедура в ходе отладки запускается на выполнение неоднократно.
При уже возможно имеющемся заголовке, созданном этой самой процедурой в одном из предыдущих запусков.
Отключать (закомментировать) участок создания заголовка не хочется,
вот и выполняется проверка создавать-не создавать.
А проверка как раз и заключается в выяснении ""...есть ли уже заголовок?".

Теперь понятно?
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392548
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заморочился как-то программным созданием форм и отчетов, а потом оказалось что эти функции в .accde не работают :(.
потому и решил предупредить :)
создал несколько универсальных отчетов - засунул в репорт-опен модуль класса и управляю видимостью, контрол-сорсами и пр. в уже созданных отчетах.
и тут Вы, __Michelle правы - это не ваш случай.
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39392550
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko... - засунул в репорт-опен модуль класса и ...
Круто.
Я так не умею.
:)
...
Рейтинг: 0 / 0
Работа с заголовком и уровнями группировки при программном создании отчета
    #39402011
smucker1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чем больше читаю, тем больше вопросов)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Работа с заголовком и уровнями группировки при программном создании отчета
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]