powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с выводом на печать
25 сообщений из 104, страница 4 из 5
Проблема с выводом на печать
    #40080570
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wawan2005, сделайте 1 столбец (вместо 2) станет нормально.
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40080574
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko,

А у меня один столбец
Или я не о том подумал, весь отчёт построен как один столбец, страницы одна под другой.
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40080577
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У этих принтеров ещё такая фишка, что когда задаёшь печать двухстороннюю, они начинают печатать с последнего листа, и если он чётный, то они его просто переворачивают, то есть всё равно видно что задана двусторонняя печать, также и если будет один лист, а в установках двусторонка будет стоять, то принтер его перевернёт (по крайней мере IP7240 это точно).
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40080583
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wawan2005, про пример Гетца писал.
может принтеры не позволяют извне изменять настройки. сложно сказать.
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40080668
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko,

вот этого я и боюсь
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40080806
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko,

А точно ни каких дополнительных библиотек не надо включать?
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40080808
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wawan2005, печатало без допбиблиотек, но вполне возможно, что может быть какая то библиотека "облегчит страдания" - не знаю.
в этих принтерах вроде PCL нет, только PostScript - может быть в этом причина.
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40080836
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko
только PostScript

А это в VBA прописать можно?
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40080845
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wawan2005,
честно говоря не вникал так глубоко, может вот для этого PS (лицензируемый Adobe) и нужна какая нить либа, поскольку кажется (ключевое слово) что VBA "говорит" с принтером на PCL (бесплатный).
в инструкции прописано, что по умолчанию стоит двухсторонняя печать - нужно что на одной стороне печатало? - просто у меня в коде прописано именно установка дуплекса, а simple как бы по умолчанию.
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40081250
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
народ, ну мож хоть у кого нибудь есть мысли как не через
Код: vbnet
1.
  .Duplex = acPRDPHorizontal


или как вообще HP и Cаnonы заставить делать двухстороннюю печать
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40081268
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот ещё вариант нашёл, тоже не работает

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Кн_Конверт_Должн_Click()
    Dim rpt As Report
    Dim prtOld As Printer
    Dim prtNew As Printer
    Dim stDocName As String
    stDocName = "О_Увед_Конверт_Должн"
    DoCmd.OpenReport ReportName:="О_Увед_Конверт_Должн", View:=acViewPreview
    Set rpt = Reports!О_Увед_Конверт_Должн
    Set prtOld = rpt.Printer
    Set prtNew = rpt.Printer
    prtNew.Duplex = acPRDPHorizontal
    Set rpt.Printer = prtOld
    DoCmd.Close ObjectType:=acReport, ObjectName:=stDocName, Save:=acSaveYes
    DoCmd.OpenReport stDocName, , , , , acViewPreview
End Sub
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40081711
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eugene-LS
На эту тему сочинилось такое решение:


Код: vbnet
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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
'--------------------------------------------------------------------
' Module    : modReportsPrinterReset
' Author    : es
' Date      : 17.01.2004
'--------------------------------------------------------------------
'Модуль ПЕРЕУСТАНОВКИ "принтерных" настроек всех отчетов
'под текущий принтер по умолчанию т.е. с настроек принтера разработчика
'на настройки принтера пользователя
'--------------------------------------------------------------------
Option Compare Database
Option Explicit

Private Type str_DEVMODE
    RGB As String * 94
End Type
'--------------------------------------------------------------------
Private Type type_DEVMODE
    strDeviceName As String * 16
    intSpecVersion As Integer
    intDriverVersion As Integer
    intSize As Integer
    intDriverExtra As Integer
    lngFields As Long
    intOrientation As Integer
End Type

Public Sub esResetAllReportsToDefPrinter()
'Смена у всех отчетов настроек принтера с "зашитых внутри отчета"
' на текущий принтер по умолчанию и его настройки
' затирает только данные по принтеру - поля и ориентация остаются прежними
'--------------------------------------------------------------------
Dim dbs As Database, ctr As Container, doc As Document
Dim objReport As Report
Dim OldOrientation As Integer 'Для запоминания старой ориентации _
   т.к. она (ориентация) входит в Свойство PrtDevMode отчета _
   кое собираемся переписывать по новой
    
On Error GoTo esResetAllReportsToDefPrinterErr
'Выключ. отображение процесса
    Application.Echo False
    Set dbs = CurrentDb
    Set ctr = dbs.Containers!Reports
    'цикл по всем отчетам
    For Each doc In ctr.Documents
        'открытие отчета в режиме редакции
        DoCmd.OpenReport doc.name, acViewDesign
        Set objReport = Reports(doc.name)
        
        'отображение инфы о тек. отчете в Status Bar
        SysCmd acSysCmdSetStatus, "Обрабатываю Отчет - " & doc.name
        
        'Запоминаем старую ориентацию для последующего восстановления (см. функцию ниже)...
        OldOrientation = esReportOrientationSetGet(objReport, True)
        'Зачистка данных о принтере в отчете
        objReport.PrtDevMode = Null
        objReport.PrtDevNames = Null
        'Закрытие отчета с сохранением "пустого принтера"
        DoCmd.Close acReport, doc.name, acSaveYes

        'Если до этого у отчета была ориентация LandsCape
        '   то восстанавливаем ее, причем отчет уже "берет"
        '   принтер по умолчанию, при повторном открытии
        If OldOrientation = 2 Then
            'открытие отчета в режиме редакции
            DoCmd.OpenReport doc.name, acViewDesign
            Set objReport = Reports(doc.name)
            
            'Debug.Print objReport.Name
            'Восстанавливаем LandsCape ориентацию (см. функцию ниже)
            '   если была Portrait то восстанавливать нет необходимости
            '   т.к. она уже установлена по умолчанию
            esReportOrientationSetGet objReport
            'Закрытие отчета с сохранением
            DoCmd.Close acReport, doc.name, acSaveYes
        End If
    Next doc
    SysCmd (acSysCmdClearStatus)
'Включаем отображение процесса на экране обратно
    Application.Echo True
    Exit Sub
esResetAllReportsToDefPrinterErr:
    Application.Echo True
    MsgBox "Процедура [esResetAllReportsToDefPrinter] привела к ошибке:" & vbCrLf & _
    Err.Description & vbCrLf & " Err#" & Err.Number & vbCrLf & _
    "При обработке Отчета - " & doc.name, vbCritical
End Sub

'--------------------------------------------------------------------
Private Function esReportOrientationSetGet(objCurReport As Report, _
                    Optional GetOnly As Boolean) As Integer
'Вспомогательная функция ,в зависимости от параметра GetOnly,
'ИЛИ :
'Возвращает код ориентации отчета
'   Portrait = 1
'   LandsCape= 2
'ИЛИ если GetOnly=False (по умолчанию):
'   делает ориентацию открытого отчета = LandsCape
'--------------------------------------------------------------------

Dim DevString As str_DEVMODE
Dim DM As type_DEVMODE
Dim strDevModeExtra As String

On Error GoTo esReportOrientationSetGetErr
    If Not IsNull(objCurReport.PrtDevMode) Then
        strDevModeExtra = objCurReport.PrtDevMode
        DevString.RGB = strDevModeExtra
        LSet DM = DevString
        esReportOrientationSetGet = DM.intOrientation
        'Если только задано параметром то вносим изменения в отчет
        If GetOnly = False Then
            'Меняем ориентацию  = LandsCape
            DM.intOrientation = 2
            LSet DevString = DM
            Mid(strDevModeExtra, 1, 94) = DevString.RGB
            objCurReport.PrtDevMode = strDevModeExtra
        End If
    End If
    Exit Function
esReportOrientationSetGetErr:
    If GetOnly = True Then
        strDevModeExtra = "При определении ориентации Отчета - " & _
        objCurReport.name
    Else
        strDevModeExtra = "При установке ориентации Отчета - " & _
        objCurReport.name
    End If
    MsgBox "Процедура [esReportOrientationSetGet] привела к ошибке:" & vbCrLf & _
    Err.Description & vbCrLf & " Err#" & Err.Number & vbCrLf & _
    strDevModeExtra, vbCritical
End Function



У меня не скромный вопрос, а если я вам вышлю базу сможете адаптировать этот кусок под неё, а то я даже не берусь, ввиду скудных знаний VBA
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40082000
Eugene-LS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wawan2005
У меня не скромный вопрос, а если я вам вышлю базу сможете адаптировать этот кусок под неё

Там всё просто:
01. Делаете резервную копию БД
02. Создаёте внешний модуль с произвольным названием и вставляете весь код туда
03. На машине где ваш HP установлен как принтер по умолчанию - Запускаете процедуру esResetAllReportsToDefPrinter и ждёте окончания её работы.
04. Пробуете настроить двухстороннюю печать.
... не факт что поможет - но попробовать стоит.
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40082002
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eugene-LS,

хорошо
попробую
P.S.: Я там Вам письмо на почту кидал, пока не надо попробую сам, коль уж так просто, только вот ещё вопрос, HP он сетевой принт сервер и но умолчанию на всех компах (включая и мой), прокатит?
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40082091
Eugene-LS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wawan2005
HP он сетевой принт сервер и но умолчанию на всех компах (включая и мой), прокатит?

Да! (если вы по код и если установлен как принтер умолчанию)
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40082095
Eugene-LS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wawan2005
только вот ещё вопрос

Посмотрите еще тут:
https://www.sql.ru/forum/940849/kak-zastavit-druzhit-printreport-i-duplex
и тут:
https://www.sql.ru/forum/940849-2/kak-zastavit-druzhit-printreport-i-duplex
... там вроде получилось.
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40082587
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eugene-LS,


Eugene-LS


Ну там пишут, что получилось, но у меня не получилось. вот что изобрёл


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  Private Sub Кн_Конверт_Должн_Click()
On Error GoTo Err_Кн_Конверт_Должн_Click
DoCmd.RunMacro "МакроРазвернуть.ВосстановитьОкно"
    Dim stDocName As String
    Reports.Printer.Duplex = acPRDPVertical
    stDocName = "Ф_Увед_Конверт_Должн"
    DoCmd.OpenReport stDocName, , , , , acViewPreview
Exit_Кн_Конверт_Должн_Click:
    Exit Sub
Err_Кн_Конверт_Должн_Click:
    MsgBox Err.Description
    Resume Exit_Кн_Конверт_Должн_Click
    End Sub


и соответственно модуль прописал, то который написан, что заработало.

Ругается
Код: vbnet
1.
 DoCmd.RunMacro "МакроРазвернуть.ВосстановитьОкно"


создал ему оба макроса, пишет что
Код: java
1.
"Невозможно открыть или выполнить макрос "МакроРазвернуть", так как он не действителен.


Я опять в тупике-(

P.S.: если оставляю строчку
Код: vbnet
1.
Reports(rpt).Printer.Duplex = acPRDPVertical 

как в примере, ругается (rpt)
Убираю (rpt)
Код: vbnet
1.
Reports.Printer.Duplex = acPRDPVertical 


ругается на макрос.
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40082601
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К стати что такое - (rpt)? Он у многих встречается.

И вот сам модуль как я его вколотил
Код: vbnet
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.
48.
49.
50.
51.
52.
Sub PrintReport(rpt, copies)
Dim TotPages, x, i1, i2
'Приостанавливаем вывод на экран (не обязательно)
Application.Echo False

'Открываем первый отчет Счета Фактуры
DoCmd.OpenReport rpt, acPreview
DoCmd.Minimize
'скрываем окно отчета (не обязательно)
Reports(rpt).Visible = False
Reports(rpt).Me.Printer.Duplex = acPRDPVertical
'Включаем вывод на экран
Application.Echo True

'Проверка на наличие данных в открытом отчете (только в одном)
'т.к. подразумевается что набор зап. второго полностью аналогичен
If Reports(rpt).HasData = 0 Then
   MsgBox "Нечего печатать!!! " & vbCrLf & _
   "отчеты:" & vbCrLf & "[" & rpt & "]" & vbCrLf & _
   "не имеeт данных", vbCritical
   'переход на метку закрытия отчетов
   GoTo jsPipeLinePrintExit
End If

'Подсчет необходимых листов бумаги и установка концовки цикла
TotPages = Reports(rpt).Pages
x = TotPages
TotPages = TotPages * copies

'If MsgBox("Вставьте в принтер " & TotPages & " листов !", vbOKCancel) = vbOK Then
   'For i = 1 To x
   DoCmd.SelectObject acReport, rpt

   'печатаем со стр. i по стр. i с высоким разрешением заданное к-во копий
   DoCmd.PrintOut acAll, , , , copies, True
   'Next
'End If

jsPipeLinePrintExit:
On Error Resume Next
DoCmd.Close acReport, rpt

Exit Sub

jsPipeLinePrintErr:
Application.Echo True
MsgBox Err.Description & ""
'Debug.Print Err.Description & vbCrLf & "Ощибка №" & Err.Number
Err.Clear
Resume jsPipeLinePrintExit

End Sub

...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40082690
Eugene-LS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wawan2005
К стати что такое - (rpt)?

судя по коду: Это название отчёта
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40084361
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eugene-LS,

Попробовал вписать имя своего отчёта терь пишет "Type mismatch"
Есть ещё какие идеи???
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40084362
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот как сейчас выглядит код


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Кн_Конверт_Должн_Click()
On Error GoTo Err_Кн_Конверт_Должн_Click
'DoCmd.RunMacro "МакроРазвернуть.ВосстановитьОкно"
    Dim О_Увед_Конверт_Должн As Report
    Dim stDocName As String, КолСтрок
    stDocName = "О_Увед_Конверт_Должн"
    Reports(О_Увед_Конверт_Должн).Printer.Duplex = acPRDPVertical
    DoCmd.OpenReport stDocName, , , , , acViewPreview
Exit_Кн_Конверт_Должн_Click:
    Exit Sub
Err_Кн_Конверт_Должн_Click:
    MsgBox Err.Description
    Resume Exit_Кн_Конверт_Должн_Click
    End Sub



Ещё не получается создать макрос "МакроРазвернуть.ВосстановитьОкно" их нет в списке создаваемых макросов, а если тупо прописываю, то не выполняет.
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40084587
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема рекордсмен по просмотрам,
но не одной светлой идеи,
народ, ну помогите кто чем может,
проверю любую "безумную идею" (в пределах кода).
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40084771
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wawan2005
Тема рекордсмен по просмотрам,
но не одной светлой идеи,
народ, ну помогите кто чем может,
проверю любую "безумную идею" (в пределах кода).

А чего вы вообще хотите?(я потерял нить ваших хотелок)
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40084777
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wawan2005
Да не тут то было, печатает первый лист нормально, а второй переворачивает по ВЕРТИКАЛИ, а надо по ГОРИЗОНТАЛИ.

Этой фразы я не понял . А когда Вы печатаете на принтере вручную , он нормально печатает.
В установках есть такая фигня , если выбрать Short то мой принтер печатает нормально , а ели Long , первая страница идет нормально , а вторая вверх ногами. Это так , к слову пришлось. :))
...
Рейтинг: 0 / 0
Проблема с выводом на печать
    #40084951
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMan,

В том то и фишка, пользовать программу будут дикие юзвери, и чем меньше у них возможности накосячат тем лучше, а косячат они профессионально, в следствии чего я и хочу прописывать настройки прямо в приложении, а в идеале тупо жёстко прописать, без права выбора, ибо нех.
...
Рейтинг: 0 / 0
25 сообщений из 104, страница 4 из 5
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с выводом на печать
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]