Изменить настройки принтера в отчетах - PullRequest
1 голос
/ 26 марта 2019

Когда я обновляю свое приложение Access, мне нужно изменить настройки принтера на каждом ПК - в соответствии с именем подключенного принтера-метки, используя определенную предварительно определенную этикетку на каждом принтере, а затем настроить поля.
Я хотел бы автоматизировать этот процесс,Но у меня возникают проблемы с получением отчетов для сохранения настроек.

Идея состоит в том, чтобы экспортировать настройки принтера в таблицу (готово), обновить приложение и затем прочитать «старые» настройки для каждого отчета исохранить его как часть обновления.

Проблема в том, что я не могу получить Access 2010 для сохранения настроек.

Есть идеи?

Dim rpt As Access.Report
Dim rstUpdRptSettings As ADODB.Recordset
Dim NameOfPrinter As String

Set rstUpdRptSettings = New ADODB.Recordset

rstUpdRptSettings.Open "Select * From tblUpdRptSettings", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

Do While Not rstUpdRptSettings.EOF
    DoCmd.OpenReport ReportName:=rstUpdRptSettings!ReportName, View:=acViewDesign, WindowMode:=acHidden
    Set rpt = Reports(rstUpdRptSettings!ReportName)
    NameOfPrinter = rstUpdRptSettings!PrinterName

    With rpt
        .Printer = Application.Printers(NameOfPrinter)
        .Printer.TopMargin = rstUpdRptSettings!TopMargin
        .Printer.BottomMargin = rstUpdRptSettings!BottomMargin
        .Printer.LeftMargin = rstUpdRptSettings!LeftMargin
        .Printer.RightMargin = rstUpdRptSettings!RightMargin
        .Printer.PaperSize = rstUpdRptSettings!PaperSize
    End With
    DoCmd.Close acReport, rpt.Name, acSaveYes
    rstUpdRptSettings.MoveNext
Loop

Выполняетсякод не меняет никаких настроек - ни имени принтера, ни полей, ни PaperSize.

1 Ответ

0 голосов
/ 26 марта 2019

Спасибо за ваш комментарий.

Я решил проблему сейчас, добавив это в код:

If .DefaultView = 0 Then
    .DefaultView = 1
Else
    .DefaultView = 0
End If
'Set it back
If .DefaultView = 0 Then
    .DefaultView = 1
Else
    .DefaultView = 0
End If

Я нашел объяснение и код здесь (спасибо Даниилу): https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8061fb4a-2e5f-4abe-a1ab-493c3d733e82/set-report-margins-using-vba?forum=accessdev

Ответ: Даниэль Пайно, 2010-2016 гг. Профессиональная поддержка Microsoft MVP: http://www.cardaconsultants.com Советы по доступу к MS и примеры кода: http://www.devhut.net

...