MyTetra Share
Делитесь знаниями!
Двухсторонняя печать отчета
Время создания: 16.03.2019 23:43
Раздел: !Закладки - VBA - Access - msa.polarcom.ru - 08 Отчеты
Запись: xintrea/mytetra_db_adgaver_new/master/base/1532016397mp2vz7ta1s/text.html на raw.githubusercontent.com

Двухсторонняя печать отчета

Автор: Владимир Мамзиков mvs@seplus.ru (ICQ: 10422611)

Когда-то, давно написал я тут для себя процедурку облегчающую мне жизни при печати отчетов на 60 листов при 2-х стороннем использовании листов.

Работает она так:
      Сначала печатаются нечетные страницы, а потом четные. При этом печать четных страниц идет в обратном порядке, - потому как мой принтер листы переворачивает и мне "в лом" их снова перекладывать :)

Если кому это не подходит, - придется процедурку подправить ;)
В проге нужно сделать специальный отчет "Пустой отчет", - для печати одной
пустой страницы (ну не придумал я как дать принтеру команду пропустить лист
:)

Еще одно.
В распечатываемом таким образом отчете должно быть заведено невидимое
служебное поле "Страниц" c источником данных "=[Pages]"

Public Sub Print2SizeReport(S As String)

DoCmd.OpenReport S, acPreview

DoCmd.Minimize

Dim KolPages As Integer, KolList As Integer, i As Integer

KolPages = Reports(S)![Страниц]

KolList = Int(KolPages / 2) + IIf(KolPages Mod 2 = 0, 0, 1)

If MsgBox("Вставьте в принтер " & KolList & " листов !", vbOKCancel) = vbOK Then

For i = 1 To KolList * 2 - 1 Step 2

DoCmd.SelectObject acReport, S

DoCmd.PrintOut acPages, i, i

Next i

For i = KolList * 2 To 2 Step -2

If i = KolPages Then

DoCmd.OpenReport "Пустой отчет", acNormal

Else

DoCmd.SelectObject acReport, S

DoCmd.PrintOut acPages, i, i

End If

Next i

End If

DoCmd.Close acReport, S

End Sub



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования