2095 / 1171 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
1

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

26.03.2010, 10:45. Показов 5045. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Это осуществимо? С помощью VBA

Добавлено через 27 минут
Вопрос снят, нашла.
С помощью этой программки печатаются сначала нечетные страницы, потом четные, при чем четные печатаются в обратном порядке, чтобы не нужно было их перекладывать.
Предварительно нужно создать "Пустой отчет", в нужном отчете добавить невидимое поле "Страниц" с источником данных =[Pages]

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
3
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2010, 10:45
Ответы с готовыми решениями:

Печать отчета
Уважаемые форумчане, требуется вывести на печать отчет по нажатию кнопки с фильтром данных. Сам...

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

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

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

1
453 / 215 / 5
Регистрация: 16.05.2010
Сообщений: 420
16.05.2010, 14:10 2
Цитата Сообщение от Ameli Посмотреть сообщение
Это осуществимо? С помощью VBA

Добавлено через 27 минут
Вопрос снят, нашла.
С помощью этой программки печатаются сначала нечетные страницы, потом четные, при чем четные печатаются в обратном порядке, чтобы не нужно было их перекладывать.
Предварительно нужно создать "Пустой отчет", в нужном отчете добавить невидимое поле "Страниц" с источником данных =[Pages]
Не сподобалась необхідність додавання порожнього звіту. А також, принтер не буде зупинятись для перевертання листків ! Між 12 1 13 строками потрібно вставити:
Visual Basic
1
If MsgBox("По закінченню друку  перекладіть папір іншою стороною та натисніть кнопку 'ОК'.", 64, "Увага !") = 1 Then
На основі цієї написав свою функцію. Спочатку друкуються всі парні сторінки. Друк починається з останньої парної сторінки. Далі друкуються всі непарні сторінки, починаючи з першої.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Option Compare Database
Option Explicit
 
Public Function fPrintReport()
Dim intAmountPages As Integer, intAmountList As Integer, i As Integer
' визначаєм кількість сторінок
intAmountPages = Reports(Screen.ActiveReport.name)![AmountPages]
' визначаєм кількість листків паперу
intAmountList = Int(intAmountPages / 2) + IIf(intAmountPages Mod 2 = 0, 0, 1)
 If MsgBox("Необхідна кількість листків паперу для друку: " & intAmountList & ". Друкуємо?", 36, "Увага !") = 6 Then
  'Якщо в звіті 1 сторінка - друкуєм її і виходим з функції  
If intAmountPages = 1 Then
            DoCmd.SelectObject acReport, Screen.ActiveReport.name
            DoCmd.PrintOut acPages
            DoCmd.Close acReport, "YourReport"
            Exit Function            
    End If
 
     ' якщо кількість сторінок непарна       
    If intAmountPages Mod 2 = 1 Then
 
    ' починаєм друк з останньої парної (від кількості сторінок віднімаєм 1)
        For i = intAmountPages - 1 To 2 Step -2
            DoCmd.SelectObject acReport, Screen.ActiveReport.name
            DoCmd.PrintOut acPages, i, i
        Next i
 
    Else
' якщо кількість сторінок парна - починаєм з останньої
        For i = intAmountPages To 2 Step -2
            DoCmd.SelectObject acReport, Screen.ActiveReport.name
            DoCmd.PrintOut acPages, i, i
        Next i
    End If
    
' друкуєм непарні сторінки
 If MsgBox("По закінченню друку парних сторінок перекладіть папір іншою стороною та натисніть кнопку 'ОК'.", 64, "Увага !") = 1 Then
        For i = 1 To intAmountPages Step 2
            DoCmd.SelectObject acReport, Screen.ActiveReport.name
            DoCmd.PrintOut acPages, i, i
        Next i    
    End If
 
DoCmd.Close acReport, "YourReport"
End If
 
End Function
Функцію краще розмістити у окремому модулі (для можливисті друку різних звітів). В потрібному звіті додати невидиме поле [AmountPages] з даними =[Pages]. Функція викликається з форми Call fPrintReport
1
16.05.2010, 14:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2010, 14:10
Помогаю со студенческими работами здесь

Печать двух копий отчета
Нужно напечатать 2 копии отчета. Не 2 раза один отчет, а именно копию.

Печать незаполненных полей отчета
Отчет - имитация печатного бланка. В этом бланке на каждой странице помещается шесть блоков...

Сложности с выводом отчета на печать
Добрый день! Возникает проблема с выводом отчета на печать (см.вложение рис.2). Сам отчет...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru