![]() |
|
Модераторы: Akina |
![]()
|
|
| qWork |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.11.2011 Репутация: нет Всего: нет |
Есть некоторый отчет, который пришлось делать практически с нуля вручную в связи с изменением законодательства. У меня стоит MS Access 2007, в нем собственно и делал этот самый отчет.
Часть отчета имеет табличную форму. В таблице есть ячейка с названием товара, которое иногда может быть длинным, а поэтому нужен перенос строки. Он сам как бы есть и в свойствах его поставить не проблема, но без связи между ячейками получается что в строке если название длинное, то расширяется в высоту только ячейка с названием, а остальные узкие какими были такими и остались, в общем получается гармошка... В 2007-м нашел как это исправить путем инструментария во вкладке "Упорядочить" - "Макет элемента управления" воспользовавшись макетом "табличный", который по сути связывает ячейки так как нужно) В общем-то в 2007-м все прекрасно работает, но вот при открытии того же отчета в той же базе, но в 2003-м Access на всю эту табличную группировку или применение макета (хз как правильней) ему абсолютно пофиг, и связанного переноса строки в таблице нету. Я так понял в 2003-м такая настройка отчета не поддерживается, но для меня это не выход, так как законодательно сокращение названия не разрешено, чтобы не переносить его вообще, а при переносе вид отчета просто нелепый. Как вариант, конечно можно было бы пересадить оператора, который работает с этой базой за 2007-й Access, но если учесть менталитет и отношение нашего человека к прогрессу, то мне это выйдет лишь боком. Поэтому задаюсь вопросом, можно ли такой перенос реализовать в 2003-м Access каким-либо другим способом, но сам на него ответить не могу, поэтому надеюсь на вашу помощь. |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Можете показать как выглядит в Access 2007 и 2003. Не совсе понимаю в чем проблема.
P.S. Уже давно отказался от отчетов в Access, все формируется в Word. |
|||
|
||||
| qWork |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.11.2011 Репутация: нет Всего: нет |
||||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Что бы это получить, можно расположить в конце строки линию и нарисовать программно вертикальную линию между началом секции области данных и этой линией. Функция ниже. Вызывать из события ОбластьДанных_Print.
Пример. |
|||
|
||||
| qWork |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.11.2011 Репутация: нет Всего: нет |
bopoha, спасибо большое, получилось. В MS Access 2003 все прекрасно работает.
Но есть проблема, почему-то теперь наоборот, когда открываю измененную базу данных в MS Access 2007, то там модуль не срабатывает, просто под каждой строчкой линия, которую соответственно ранее добавлял в конструкторе для модуля. Сделал все точно также как и в примере, да и еще раз пять перечитал вашу статью, вроде бы программно все правильно. А вот когда открываю базу данных прикрепленную как пример, в котором тот же модуль и все то же самое, там в отчете табличка рисуется на ура. Подозреваю, что дело в каких-то настройках безопасности которые могут блокировать работу модуля, а может и ошибаюсь... не подскажете в чем может быть причина? |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Если мой пример работает в 2003 и в 2007, а ваш нет, то помойму проблема в вашем коде. Настройки безопасности будут работать для всех открываемых баз данных.
Попробуйте воспользоваться отладчиком. Вызывается ли событие в отчете. Может происходит какая-нибудь ошибка и она же гасится. |
|||
|
||||
| qWork |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.11.2011 Репутация: нет Всего: нет |
bopoha, да в том то и дело что с кодом все впорядке если я правильно все сделал и ничего не забыл:
в отчете области данных убрал границы ячеек в конструкторе, потом внизу под ячейками нарисовал горизонтальную линию по ширине всех вместе взятых ячеек, в конструкторе как бы все. далее выделив "область данных" нажал правой кнопкой мыши - Обработка событий - Программы и таким образом перешел в VBA, туда скопировал запись с вашего примера, а именно:
Что, насколько я понимаю, и должно вызывать обработку нарисованной линии модулем. Далее в том же VBA создал новый модуль, который назвал тоже назвал m_report, хотя название здесь по идее роли не играет. Скопировал туда ваш код:
сохранил все, перезапустил отчет в MS Access 2003 - все прекрасно работает, перезапустил тот же файл на том же ПК в MS Access 2007 и там результат, о котором я писал выше. Чисто, логически, ничего больше не нужно, все что нужно было я сделал или может все таки что-то упустил именно в процессе описанной вами процедуры?. Посмотрел настройки для макросов, то там ничего не заблокировано. ЗЫ извиняюсь за идиотский вопрос, но что подразумевается под отладчиком? Менюшка Debug в VBA? Нажал скомпилировать пример, но ничего толком не произошло, остальные команды подменю тоже не дают ничего внятного. |
||||
|
|||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |