Newsgroup: it.comp.appl.access
Titolo: impostare formato foglio personalizzato da codice su un report

Salve
PC A:
access xp
windows xp pro
stampante Pippo
su proprietà server stampa è stato creato un formato chiamato "MioModulo" di 
dimensioni 10*10cm margini 0
da pannello di controllo -> stampanti->imposto che la stampante Pippo usi 
questo modulo sia sulle impostazioni sia su preferenze di stampa
sul mio db ho un report costrutito per la stampante specifica pippo con 
formato MioModulo e stampa perfettamente.
PC B:
access xp
windows xp home <<<<---unica differenza
stampante Pippo (stessi driver del pcA)
creato il modulo "MioModulo" di dimensioni 10*10cm  margini 0 sull server 
stampa
da pannello di controllo -> stampanti->imposto che la stampante usi questo 
modulo sia sulle impostazioni sia su preferenze di stampa
Porto sul PC B il mio db e la stampa è completamente sballata...margini 
buttati a caso e formato foglio preso a caso.
Vado su imposta pagina, seleziono a mano "MioModulo" e la stampa diventa 
perfetta
operazione che con un mde dovrei fare ad ogni apertura del programma :-(
Ho dato un'occhiata all'oggetto printer...ma vedo che non permette di dire 
"usa il modulo chiamato miomodulo"
come mai non prende di default il modulo con nome uguale?
qualche suggerimento su come risolvere questo problema?
grazie
Ciao, Fabio

 Mi da un errore di "tipo non corrispondente".
Il problema è che su un computer diverso la tua carta personalizzata
ha un id diverso. È questo id che devi passare come PaperSize ma
solo gli id dei formati predefiniti sono sempre uguali.
Copia questo codice in un nuovo modulo standard:
'************** CODE START **************
'Dieser Source stammt von 
http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.
'etwas adaptiert für Access von Karl Donaubauer
Private Declare Function DeviceCapabilities Lib "winspool.drv" _
        Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As _
        String, ByVal lpPort As String, ByVal iIndex As Long, _
        lpOutput As Any, ByVal dev As Long) As Long
Const DC_PAPERS As Long = 2&
Const DC_PAPERNAMES As Long = 16&
Public Function GetPapers(prn As Printer, strPaperName As String) As Long
    Dim X As Integer, p As Integer, Papers As Integer
    Dim AA As String, bb As String, PaperList As String
    Dim PSize As String
    Dim dX As Long, dY As Long
    Dim PaperNums() As Integer
    Papers = DeviceCapabilities(prn.DeviceName, prn.Port, _
             DC_PAPERS, ByVal vbNullString, 0)
    If Papers > 0 Then
        ReDim PaperNums(1 To Papers)
        Papers = DeviceCapabilities(prn.DeviceName, prn.Port, _
                 DC_PAPERS, PaperNums(1), 0)
        PaperList = String$(64 * Papers, 0)
        Papers = DeviceCapabilities(prn.DeviceName, prn.Port, _
                 DC_PAPERNAMES, ByVal PaperList, 0)
        For X = 1 To Papers
            AA = Mid(PaperList, 64 * (X - 1) + 1, 64)
            p = InStr(AA, vbNullChar)
            If p Then AA = Left$(AA, p - 1)
            If AA = strPaperName Then
                GetPapers = PaperNums(X)
                Exit For
            End If
        Next X
    Else
        Call MsgBox("Errore! Molto probabile il driver non supporta " & _
        "questa funzione!")
    End If
End Function
'************** CODE END **************
Poi invece della riga
.PaperSize = "Etichetta100x60"
usi
.PaperSize = GetPapers(rpt.Printer, "Etichetta100x60")
CIaoooooooooooooooooooooooooooooooooooo

>
supercut
il problema è proprio l'ID dei formati personalizzati.
Mi studio il tuo codice e ti faccio sapere
grazie mille
Fabio