Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: час
ааааааа вот нашёл, но кода много........


Вопрос: для отчета установить параметры страницы (программно)

Совет:
У меня тоже похожие проблемы.
Делаю репорт у себя на машине: размер бумаги А4,
ставлю базу на другую машину, размер бумаги сбивается на Letter.
Я человек в таких делах тёмный, но думаю здесь дело в настройках принтера..
ну да бог с ними.
Чтоб лицом в грязь всякий раз не падать, порывшись в хелпе, нарисовали мы тут
пару функций (см. далее). Hа открытие репорта функция GetPaperSize проверяет
размер бумаги и, если размер не наш, репорт мы закрываем, записывая в некую
глобальную переменную, что, дескать, на сей раз не срослось... Потом проверяем
переменную и, если надо, запускаем SetPaperSizeA4 и снова пытаемся открыть
репорт.
По-делетантски это всё, конечно, но пока работает.
Может и вам на что сгодится.

==========================================

Option Compare Database
Option Explicit


Type str_DEVMODE
    RGB As String * 94
End Type

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
    intPaperSize As Integer
    intPaperLength As Integer
    intPaperWidth As Integer
    intScale As Integer
    intCopies As Integer
    intDefaultSource As Integer
    intPrintQuality As Integer
    intColor As Integer

    intDuplex As Integer
    intResolution As Integer
    intTTOption As Integer
    intCollate As Integer
    strFormName As String * 16
    lngPad As Long
    lngBits As Long
    lngPW As Long
    lngPH As Long
    lngDFI As Long
    lngDFr As Long
End Type

Public Sub SetPaperSizeA4(strReportName As String)
On Error GoTo Err1

    Dim DevString As str_DEVMODE
    Dim DM As type_DEVMODE
    Dim strDevModeExtra As String
    Dim rpt As Report
    
    DoCmd.Echo False
    DoCmd.OpenReport strReportName, 
    Set rpt = Reports.Item(strReportName)
    If Not IsNull(rpt.PrtDevMode) Then
        strDevModeExtra = rpt.PrtDevMode  
        DevString.RGB = strDevModeExtra
        LSet DM = DevString

        'Set A4 paper size
        DM.intPaperSize = 9                
       
        LSet DevString = DM                
        Mid(strDevModeExtra, 1, 94) = DevString.RGB
        rpt.PrtDevMode = strDevModeExtra
    End If
    DoCmd.Save

    DoCmd.Echo True

    Exit Sub
Err1:
    DoCmd.Echo True
    MsgBox Err.Description
End Sub

Public Function GetPaperSize(objReport As Report) As Integer
On Error GoTo Err1

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

    If Not IsNull(objReport.PrtDevMode) Then
        strDevModeExtra = objReport.PrtDevMode  
        DevString.RGB = strDevModeExtra
        LSet DM = DevString
        
        GetPaperSize = DM.intPaperSize   
    Else
        GetPaperSize = 0
    End If

    Exit Function
Err1:
    MsgBox Err.Description
End Function


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.