Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.62
slamer
#1

Добавить пустой лист в отчет - MS Access

22.01.2007, 22:14. Просмотров 3751. Ответов 9
Метки нет (Все метки)

Добрый вечер. Суть задачи - необходимо добавить пустой лист в отчете.
Поясню зачем это нужно - Есть отчет с группировко по нескольким полям, в котором каждая группа начинается с нового листа. При печати на принтере с двусторонней печатью за раз всего отчета может получиться что если в группе нечетное кол-во листов, то первый лист новой группы напечатается на обороте последнего листа предыдущей группы, что неприемлемо. Можно конечно печатать интервалами начиная с первого листа группы и заканчивая последним, но в отчете в среднем каждый месяц бывает около 400 листов, и перемещение между ними для того чтобы найти начало следующей группы происходит очень медленно. Очень. Такое ощущение что Access каждый раз заново пересоздает весь отчет.
http://www.cyberforum.ru/ms-access/thread2062102.html
Собс-но решением проблемы стало бы добавление к группе, имеющей нечетное количество листов, пустого листа в конец этой группы. (Кол-во страниц в группе известно - спасибо BoNiM). Но можно-ли и как это сделать не представляю.
Спасибо всем кто дочитал это послание до конца, а если кто-то еще и поскажет решение буду премного благодарен.
best regards!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2007, 22:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Добавить пустой лист в отчет (MS Access):

Как проверить пустой отчет или нет?
Идея такая на главной форме есть флажки которые должны указывать есть ли данные...

БД Борей 2007, добавить отчет.
Проблема следующего плана, открыл готовую базу (локальный шаблон) Борей 2007, в...

Как добавить флажок в отчет?
Как сделать так: Если поле отчета содержит определенное слово, то ...

Как в отчет добавить интервал дат?
Как в отчет добавить интервал дат?? можно ли это вобще сделать в Access 2007??...

Добавить поле, в котором бы отображался порядковый номер, в отчет
Как добавить поле в отчет в котором бы отображался порядковый номер т.е. для...

9
Михайло
115 / 115 / 10
Регистрация: 12.05.2010
Сообщений: 1,204
24.01.2007, 20:40 #2
1. Создайте примечание раздела.

2. Задайте свойство «Конец страницы» (ForceNewPage) = "До раздела".

3. Обработчик события «Форматирование» (Format) имеет следующий синтаксис:



Private Sub имяРаздела_Format(Cancel As Integer, FormatCount As Integer)



В обработчик события «Форматирование» (Format) примечания раздела напишите, что если кол-во страниц - чётное (это Вы вроде как можете определить), то Cancel=True - в этом случае раздел не будет отпечатан и пустая страница не будет добавлена.
0
slamer
26.01.2007, 00:34 #3
Здравствуйте, Михайло!
К сожалению воспользоваться Вашим советом не могу, т.к. примечание группы используется в отчете для вывода итоговых значений для этой группы записей. Но мысль понятна, и есть идея попробовать изменение высоты примечания, т.е. если количество страниц нечетное, задаем такую высоту примечания, чтобы она занимала два листа.
Вот только есть проблема с колонтитулом всего отчета, там шапка для всех листов, и печатать ее на пустом листе не хотелось бы, а сделав ее невидимой первый раз при изменении высоты примечания, для последующих листов она так и остается невидимой. Но это наверно поправимо.
Спасибо, буду пробовать!
Михайло
115 / 115 / 10
Регистрация: 12.05.2010
Сообщений: 1,204
26.01.2007, 11:54 #4
Не в высоте дело... И вообще, это неправильный путь.

Добавьте фиктивный уровень группировки и получите искомое примечание. Уровень можно кроме всего прочего получить путём ввода выражения вместо имени поля таблицы/запроса. Например, так:



=false
0
Михайло
115 / 115 / 10
Регистрация: 12.05.2010
Сообщений: 1,204
26.01.2007, 12:12 #5
А ещё лучше - сделайте копию требуемого уровня группировки, в примечании которого и выполняйте добавление страницы...
0
slamer
28.01.2007, 23:10 #6
Уважаемый Михайло, полностью согласен с Вами по поводу подхода. Просто время поджимает и это первое, что пришло в голову. (Правда в итоге ничего не вышло.)
Если добавить группировку по фиктивному выражению (=false) и сделать так, как Вы писали выше, то получается на каждую строку по странице, а сделать копию уровня группировки по нужному полю (NUMR) у меня не получилось. Если сделать еще одну группировку по этому же полю (NUMR), ACCESS ругается на неоднозначную ссылку на это поле.
Если Вам не трудно, напишите как правильно сделать копию уровня группировки.
Заранее спасибо!
Михайло
115 / 115 / 10
Регистрация: 12.05.2010
Сообщений: 1,204
29.01.2007, 14:05 #7
1. Предположим, у Вас есть уровень группировки по полю NUMR таблицы/запроса.

В заголовке группы заполните свойство «Конец страницы» (ForceNewPage) = "До раздела".

2. Создайте ещё один уровень группировки по полю NUMR и в примечании группы:

- заполните свойство «Конец страницы» (ForceNewPage) = "До и после раздела";

- поместите элемент управления "Разрыв страницы".

- в процедуру обработки события «Форматирование» (Format) этого примечания напишите:



If (Page Mod 2) <> 0 Then Cancel = -1



Пример прилагается.
1
slamer
21.02.2007, 19:01 #8
Михайло, здравствуйте.
Извините, что долго молчал ( командировка ). Спасибо за такой исчерпывающий ответ, но в моем случае это не сработало, я забыл написать, что работаю с SQL Server и источником строк в отчете у меня является ХП, возвращающая некий набор строк. И при попытке добавить еще один уровень группировки по полю, ACCESS ругается на неоднозначную ссылку на это поле. Возможно это происходит только для ХП? Или я не правильно что-то делаю?
Михайло
115 / 115 / 10
Регистрация: 12.05.2010
Сообщений: 1,204
22.02.2007, 14:44 #9
Дабы не пенять на сервер, создайте таблицу в Вашем mdb-файле и подставьте её в качестве входных данных. Может тогда мы сможем разобраться в чём проблема...
0
mav5891
0 / 0 / 0
Регистрация: 03.09.2015
Сообщений: 1
03.10.2017, 15:48 #10
Здравствуйте Михайло. Ваш пример точно работает, все получилось. Большое Спасибо!!!
0
03.10.2017, 15:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2017, 15:48
Привет! Вот еще темы с решениями:

Проверить, если лист пустой
Добрый день подскажите пожалуйста, как будет выглядеть макрос, который...

Беда с печатью. Пустой лист
Пытаюсь распечатать форму. Код взял с MSDN: private...

Word 2003 пролистивает документ и открывает пустой лист
Привет всем :) Только-что зарегался на вашем форуме так как очень нужно решить...

Печать через PrintDialog и PrintDocument: печатается пустой лист
Вобщем дело в том, что при выводе на печать принтер прогоняет пустой лист и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru