Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глюк ForceNewPage в сочетании с NextRecord=False 
:(
    Опции темы
CheBuratoR
Дата 9.11.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Напоролся на следующие вилы:
Есть отчет, в котором осуществляется переход к следующей позиции печати через MoveLayout=True, но сама запись на следующую не переходит, т.е. протаскиваем одну и туже запись через весь лист или несколько листов. Програмно организован разрыв страницы с помощью ForceNewPage по достижению определенного количества строк на листе. Но, этот разрыв не работает. Заполняется вся площадь листа. При переходе на следующий лист начинают теряться записи. Причем заметил, переход с листа на лист осуществляется правильно, если NextRecord=True. Как это забороть. Ниже кусок програмки:

Код

Dim LineNumber, RecordsNumber, RecordsPerFullPage, NumberOfPages As Integer
Const MaxLinePerFirstPage = 17, MaxLinePerLastPage = 27, MaxLinePerPage = 35


Private Sub ВерхнийКолонтитул_Format(Cancel As Integer, FormatCount As Integer)
RecordsNumber = DCount("[№]", "Пооперационный контроль", "[№п/п]=" & [№п/п])
RecordsPerFullPage_ = RecordsNumber - (MaxLinePerFirstPage + MaxLinePerLastPage) 'Определяем, будут ли записи на листах кроме первого
RecordsPerFullPage = IIf(RecordsPerFullPage_ <= 0, 0, RecordsPerFullPage_) 'если <=0, не будут; если больше - будут
NumberOfPages_ = RecordsPerFullPage / 2 / MaxLinePerPage 'Определяем число полностью заполенных страниц
NumberOfPages = IIf(NumberOfPages_ - Int(NumberOfPages_) > 0, Int(NumberOfPages_) + 1, Int(NumberOfPages_))
page_ = (NumberOfPages + 1) * 2
End Sub

Private Sub ЗаголовокГруппы1_Format(Cancel As Integer, FormatCount As Integer)
LineNumber = 1
End Sub

Private Sub ОбластьДанных_Format(Cancel As Integer, PrintCount As Integer)
Call HandleLine
End Sub

Private Sub HandleLine()
КонецСтраницы282.Visible = False
On Error Resume Next
If LineNumber > MaxLinePerFirstPage + MaxLinePerLastPage + NumberOfPages * 2 * MaxLinePerPage Then 'Вычисляем последнюю позицию печати
Me.PrintSection = False 'переходим на следующий сопроводительный лист
Me.MoveLayout = False
Me.NextRecord = True 'При ее достижении
Exit Sub
End If

If LineNumber < RecordsNumber Then 'выводим все данные до предпоследней строки
№.Visible = True
Наименование_операции.Visible = True
Else 'если строка предпоследняя, то на последнюю строку мы не переходим,
Me.NextRecord = False 'но продолжаем выделять место под нее. Кроме этого делаем невидимыми
№.Visible = False 'поля со значениями предпоследней строки, которая повторяется
Наименование_операции.Visible = False
End If

If LineNumber = RecordsNumber Then 'Для последней строки определяем данные и вводим их в два дополнительных поля
№_ = DLast("[№]", "Пооперационный контроль", "[№п/п]=" & [№п/п])
Наименование_операции_ = DLookup("[Наименование операции]", "Операции", "[№опер]=" & DLast("[Наименование операции]", "Пооперационный контроль", "[№п/п]=" & [№п/п]))
Else
№_ = ""
Наименование_операции_ = ""
End If


If LineNumber = MaxLinePerFirstPage + Int((LineNumber - MaxLinePerFirstPage) / MaxLinePerPage) * MaxLinePerPage Then 'Новая страница в конце листа
КонецСтраницы282.Visible = True
'Me.Section(0).ForceNewPage = 2
Else
Me.Section(0).ForceNewPage = 0
End If

Поле281 = LineNumber
LineNumber = LineNumber + 1

End Sub

Private Sub ПримечаниеГруппы0_Format(Cancel As Integer, FormatCount As Integer)
Me.Page = 0
End Sub


Это сообщение отредактировал(а) Akina - 9.11.2007, 16:58
PM MAIL   Вверх
bopoha
Дата 9.11.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Пользуйтесь тегами code - читабельней.
Что-то я не понял, а зачем это все?
PM MAIL WWW ICQ Skype GTalk   Вверх
CheBuratoR
Дата 12.11.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



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

Это сообщение отредактировал(а) CheBuratoR - 12.11.2007, 10:39
PM MAIL   Вверх
Akina
Дата 12.11.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(CheBuratoR @  12.11.2007,  11:37 Найти цитируемый пост)
заполнить страницу до конца пустыми строками, в которые можно ручками данные дописывать

В отчете??? ручками??? или имеется в виду шариковой ручкой по распечатанному отчету?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
CheBuratoR
Дата 12.11.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Ну конечно-же шариковой ручкой по распечатанному отчету
PM MAIL   Вверх
Akina
Дата 12.11.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(CheBuratoR @  12.11.2007,  11:37 Найти цитируемый пост)
есть особенность, количество страниц для печати всегда четное, т.е. примечание отчета размещается на 2, 4 и т.д. страницах.

Ну так сделайте бланк отчета длиной в 2 страницы. Это должно снять все проблемы единым махом... как мне кажется.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
CheBuratoR
Дата 12.11.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



А-ть, не могу. Страниц может быть не 2, а 4, 6, 8 и т.д. Причем вид первой и последней страниц отличаються от остальных
PM MAIL   Вверх
bopoha
Дата 12.11.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Ну тогда, делаете первую, последнюю, и серединку. 
Пользователь говорит сколько. 
В тихом режиме отправляет на принтер без предварительного просмотра первый лист, серединки и последний.
Так пойдет?

PM MAIL WWW ICQ Skype GTalk   Вверх
CheBuratoR
Дата 15.11.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Дык, практически так и пытаюсь сделать. Не понял насчет, "Пользователь говорит сколько". Вид листов определяется числом записей на конкретную группу.

Вааще-то проблемку я решил, но по гемморойски. Обошел данный глюк за счет создания дополнительной таблицы с числом записей равному числу записей которые размещаються, на нужном числе страниц. После чего исходную таблицу и дополнительную склеиваю через Union и передаю в отчет. Получается, что число записей в группе всегда равно тому числу записей, которые по максимуму можно разместить на требуемых страницах. Попутно отпадает необходимость протягивать запись через несколько листов, т.е всегда NextRecord=True, и при этом данный глюк не возникает.
PM MAIL   Вверх
bopoha
Дата 15.11.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Цитата(CheBuratoR @  15.11.2007,  10:29 Найти цитируемый пост)
Не понял насчет, "Пользователь говорит сколько". Вид листов определяется числом записей на конкретную группу.


Значит не пользователь говорит, а где-то прописано.
Что значит на конкретную группу?
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.