Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
 Re: Проблема с выводом на печать  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 849
Wawan2005, сделайте 1 столбец (вместо 2) станет нормально.
28 июн 21, 17:38    [22341202]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
alecko,

А у меня один столбец
Или я не о том подумал, весь отчёт построен как один столбец, страницы одна под другой.
28 июн 21, 17:46    [22341206]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
У этих принтеров ещё такая фишка, что когда задаёшь печать двухстороннюю, они начинают печатать с последнего листа, и если он чётный, то они его просто переворачивают, то есть всё равно видно что задана двусторонняя печать, также и если будет один лист, а в установках двусторонка будет стоять, то принтер его перевернёт (по крайней мере IP7240 это точно).
28 июн 21, 17:50    [22341209]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 849
Wawan2005, про пример Гетца писал.
может принтеры не позволяют извне изменять настройки. сложно сказать.
28 июн 21, 18:03    [22341217]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
alecko,

вот этого я и боюсь
29 июн 21, 11:21    [22341396]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
alecko,

А точно ни каких дополнительных библиотек не надо включать?
29 июн 21, 21:31    [22341693]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 849
Wawan2005, печатало без допбиблиотек, но вполне возможно, что может быть какая то библиотека "облегчит страдания" - не знаю.
в этих принтерах вроде PCL нет, только PostScript - может быть в этом причина.
29 июн 21, 21:51    [22341698]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
alecko
только PostScript

А это в VBA прописать можно?
30 июн 21, 07:49    [22341758]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 849
Wawan2005,
честно говоря не вникал так глубоко, может вот для этого PS (лицензируемый Adobe) и нужна какая нить либа, поскольку кажется (ключевое слово) что VBA "говорит" с принтером на PCL (бесплатный).
в инструкции прописано, что по умолчанию стоит двухсторонняя печать - нужно что на одной стороне печатало? - просто у меня в коде прописано именно установка дуплекса, а simple как бы по умолчанию.
30 июн 21, 09:36    [22341781]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
народ, ну мож хоть у кого нибудь есть мысли как не через
  .Duplex = acPRDPHorizontal

или как вообще HP и Cаnonы заставить делать двухстороннюю печать
1 июл 21, 19:28    [22342544]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
Вот ещё вариант нашёл, тоже не работает

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
1 июл 21, 23:02    [22342588]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
Eugene-LS
На эту тему сочинилось такое решение:


+
'--------------------------------------------------------------------
' 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
5 июл 21, 09:40    [22343495]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Eugene-LS
Member

Откуда: РФ
Сообщений: 63
Wawan2005
У меня не скромный вопрос, а если я вам вышлю базу сможете адаптировать этот кусок под неё

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

Сообщение было отредактировано: 6 июл 21, 08:48
6 июл 21, 08:54    [22343965]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
Eugene-LS,

хорошо
попробую
P.S.: Я там Вам письмо на почту кидал, пока не надо попробую сам, коль уж так просто, только вот ещё вопрос, HP он сетевой принт сервер и но умолчанию на всех компах (включая и мой), прокатит?
6 июл 21, 09:03    [22343967]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Eugene-LS
Member

Откуда: РФ
Сообщений: 63
Wawan2005
HP он сетевой принт сервер и но умолчанию на всех компах (включая и мой), прокатит?

Да! (если вы по код и если установлен как принтер умолчанию)
6 июл 21, 13:26    [22344123]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Eugene-LS
Member

Откуда: РФ
Сообщений: 63
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
... там вроде получилось.

Сообщение было отредактировано: 6 июл 21, 13:23
6 июл 21, 13:31    [22344128]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
Eugene-LS,


Eugene-LS
Посмотрите еще тут:
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
... там вроде получилось.


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


  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

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

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

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

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

P.S.: если оставляю строчку
Reports(rpt).Printer.Duplex = acPRDPVertical 
как в примере, ругается (rpt)
Убираю (rpt)
Reports.Printer.Duplex = acPRDPVertical 

ругается на макрос.
8 июл 21, 11:40    [22345043]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
К стати что такое - (rpt)? Он у многих встречается.

И вот сам модуль как я его вколотил
+
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
8 июл 21, 11:53    [22345059]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Eugene-LS
Member

Откуда: РФ
Сообщений: 63
Wawan2005
К стати что такое - (rpt)?

судя по коду: Это название отчёта
8 июл 21, 14:55    [22345223]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
Eugene-LS,

Попробовал вписать имя своего отчёта терь пишет "Type mismatch"
Есть ещё какие идеи???
16 июл 21, 13:09    [22348028]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
Вот как сейчас выглядит код


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


Ещё не получается создать макрос "МакроРазвернуть.ВосстановитьОкно" их нет в списке создаваемых макросов, а если тупо прописываю, то не выполняет.
16 июл 21, 13:12    [22348029]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
Тема рекордсмен по просмотрам,
но не одной светлой идеи,
народ, ну помогите кто чем может,
проверю любую "безумную идею" (в пределах кода).
19 июл 21, 10:17    [22348573]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 2262
Wawan2005
Тема рекордсмен по просмотрам,
но не одной светлой идеи,
народ, ну помогите кто чем может,
проверю любую "безумную идею" (в пределах кода).

А чего вы вообще хотите?(я потерял нить ваших хотелок)
20 июл 21, 04:57    [22348861]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
DarkMan
Member

Откуда:
Сообщений: 963
Wawan2005
Да не тут то было, печатает первый лист нормально, а второй переворачивает по ВЕРТИКАЛИ, а надо по ГОРИЗОНТАЛИ.

Этой фразы я не понял . А когда Вы печатаете на принтере вручную , он нормально печатает.
В установках есть такая фигня , если выбрать Short то мой принтер печатает нормально , а ели Long , первая страница идет нормально , а вторая вверх ногами. Это так , к слову пришлось. :))

К сообщению приложен файл. Размер - 15Kb
20 июл 21, 08:17    [22348871]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом на печать  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 466
DarkMan,

В том то и фишка, пользовать программу будут дикие юзвери, и чем меньше у них возможности накосячат тем лучше, а косячат они профессионально, в следствии чего я и хочу прописывать настройки прямо в приложении, а в идеале тупо жёстко прописать, без права выбора, ибо нех.
20 июл 21, 23:28    [22349164]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить