Newsgroup: it.comp.appl.access
Titolo: Impostare foglio A3

Ho avuto la necessità di impostare il foglio A3 per un report, ma ad ogni
modifica Access97 reimposta A4.
Ho visto nei msg del ng che questo problema interessava anche altre persone,
per cui vi posto la soluzione (che comunque è adattabile anche ad altre
impostazioni).
Se sul pc dove viene eseguita, la stampante di default non supporta il
formato A3, rimane impostato A4, senza nessun msg di errore.
Nella form che lancia la stampa, va richiamata la funzione ImpostaA3,
passando il nome del report:
    stDocName = "RepElencoPresenze"
    If ImpostaA3(stDocName) Then
        DoCmd.OpenReport stDocName, acPreview
    Else
        msgbox "Impossibile impostare A3"
    End If
--------------------------------------------------
Questa è la funzione, da mettere in un modulo
Option Compare Database
Option Explicit
Type prnCfg
    prtDimensFoglio As Integer
    prtOrientamento As Integer
End Type
Type str_DEVMODE
    RGB As String * 94
End Type
Type type_DEVMODE
    strNomeDispositivo As String * 16
    intVersioneSpec As Integer
    intVersioneDriver As Integer
    intDimensione As Integer
    intDriverExtra As Integer
    lngCampi As Long
    intOrientamento As Integer
    intDimensFoglio As Integer
    intLunghezzaFoglio As Integer
    intLarghezzaFoglio As Integer
    intScala As Integer
    intCopie As Integer
    intOriginePredef As Integer
    intQualitàStampa As Integer
    intColore As Integer
    intDuplex As Integer
    intRisoluzione As Integer
    intOpzioneTT As Integer
    intFascicola As Integer
    strNomeMaschera As String * 16
    lngTitolo As Long
    lngBit As Long
    lngPW As Long
    lngPH As Long
    lngDFI As Long
    lngDFr As Long
End Type
Public Function ImpostaA3(rptName As String) As Boolean 'torna vero se c'è
errore
On Error GoTo Erro
Dim StringaPer As str_DEVMODE
Dim DM As type_DEVMODE
Dim strModalitàExtraPer As String
Dim rpt As Report
Const DM_PORTRAIT = 1
Const DM_LANDSCAPE = 2
Const DM_FOGLIO_A3 = 8
Const DM_FOGLIO_A4 = 9
    ImpostaA3 = True
    DoCmd.OpenReport rptName, acDesign
    Set rpt = Reports(rptName)
    If Not IsNull(rpt.prtDevMode) Then
        strModalitàExtraPer = rpt.prtDevMode
        StringaPer.RGB = strModalitàExtraPer
        LSet DM = StringaPer
        DM.lngCampi = DM.lngCampi Or DM.intOrientamento ' Inizializza campi.
        DM.intOrientamento = DM_LANDSCAPE
        'DM.intOrientamento = DM_PORTRAIT
        DM.intDimensFoglio = DM_FOGLIO_A3
        'DM.intDimensFoglio = DM_FOGLIO_A4
        LSet StringaPer = DM                        ' Aggiorna la proprietà.
        Mid(strModalitàExtraPer, 1, 94) = StringaPer.RGB
        rpt.prtDevMode = strModalitàExtraPer
    End If
    DoCmd.Close acReport, 
rpt.name
, acSaveYes
    Set rpt = Nothing
    'fins ("Operazione conclusa con successo!")
    Exit Function
Erro:
    Resume Niente
Niente:
    On Error Resume Next
    Set rpt = Nothing
    ImpostaA3 = False
End Function

 impostazioni).
[CUT]
Forse non sarebbe male se inviassi la soluzione anche al Sito Comune.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:%OLa9.109023$lu5.2...@twister1.libero.it...
