Newsgroup: it.comp.appl.access
Titolo: Pdf per PDWRITE

Eugenio Pezzotti
PDWRITE : USB001  (Virtual printer port for USB)
QUESTO E' IL CODICE CHE HO MESSO NEL FORM
PER STAMPARE:
Private Sub Stampa_Click()
 On Error GoTo Err_Stampa_Click
 Dim strTitolo As String, strFileName As String
 Dim I As Integer, j As Integer
 For I = 1 To 1
    Select Case I
        Case 1
             strTitolo = Me.NomeSocietà
         Case 2
             strTitolo = "Secondo"
         Case 3
             strTitolo = "Terzo"
         Case 4
             strTitolo = "Quarto"
         Case 5
             strTitolo = "Quinto"
     End Select
     Dim stLinkCriteria
    stLinkCriteria = "[IDOrdine]=" & Me![IDOrdine]
    DefaultPrinter = GetDefaultPrinter()
    strFileName = "C:\WINDOWS\DESKTOP\" & strTitolo & ".PDF"
     SetDefaultPrinter ("Acrobat PDFWriter")
     SetPdfFileName (strFileName)
     DoCmd.OpenReport "StampaPreventivoN", acViewNormal, stLinkCriteria
     'Pausa per dar modo al sistema di rilasciare il file PDFwritr.ini
     For j = 0 To 5000
     DoEvents
     Next j
 Next I
 SetDefaultPrinter (DefaultPrinter)
Exit_Stampa_Click:
     Exit Sub
Err_Stampa_Click:
     MsgBox ERR.Description
     Resume Exit_Stampa_Click
 End Sub
-------------
Option Compare Database
Option Explicit
Declare Function GetProfileString& Lib "kernel32" Alias "GetProfileStringA"
_
(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As _
String, ByVal lpReturnedString As String, ByVal nSize As Long)
Declare Function WriteProfileString& Lib "kernel32" Alias _
"WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As _
String, ByVal lpszString As String)
Public DefaultPrinter As String
Public Sub SetPdfFileName(strFileName As String)
 Dim lngFile As Long
 On Error GoTo Err_SetPdfFileName
     lngFile = FreeFile
     Open "C:\Windows\System\PDFWritr.ini" For Output As #lngFile
     Print #lngFile, "[Acrobat PDFWriter]"
     Print #lngFile, "compatibility=1"
     Print #lngFile, "PDFFileName=""" & strFileName & """"
     Close #lngFile
Exit_SetPdfFileName:
     Exit Sub
Err_SetPdfFileName:
     MsgBox ERR.Description
     Resume Exit_SetPdfFileName
 End Sub
Public Function GetDefaultPrinter() As String
    'ritorna il nome della stampante predefinita
    Dim x As Integer
    Dim buffer As String
    buffer = Space$(255)
    x = GetProfileString("windows", "device", "?", buffer, 255)
    GetDefaultPrinter = Left$(buffer, x)
End Function
Public Sub SetDefaultPrinter(s As String)
On Error GoTo Esci
    'imposta la stampante passata come argomento a predefinita
    Dim x As Long
    If IsNull(s) Or s = "" Then Exit Sub
    x = WriteProfileString("windows", "device", vbNullString)
    DoEvents
    x = WriteProfileString("windows", "device", s)
    DoEvents
Esci:
End Sub
Public Sub ResetDefaultPrinter()
    'reimposta a predefinita la stampante memorizzata nella var globale
    SetDefaultPrinter (DefaultPrinter)
End Sub

  End Sub
Che versione di PDFwriter stai utilizzando ?
Ciao
Eugenio

 >              strTitolo = Me.NomeSocietà


 ha scritto nel messaggio
news:c1d3r9$no3$1...@lacerta.tiscalinet.it...


 ha scritto nel messaggio
news:c1d228$k49$1...@lacerta.tiscalinet.it...

Ciao, Eugenio!
Come va?
Sto provando a fare la fatturazione
e non va al 100%...
Quando gereno le fatture, metti che siamo
80, in questa tabella esisto anche altri
documenti tipo D.d.t. - Note accredito;
quando lancio la stampa, filtrando anche
il report, mi stampa tutti i documenti.
Devo spostarli in una tabella virtuale?
se metto cosi:
 SetPdfFileName (strFileName)
 DefaultPrinter = GetDefaultPrinter()
 SetDefaultPrinter ("Acrobat PDFWriter")
  DoCmd.OpenReport "StampaPreventivoN", acViewNormal, stLinkCriteria
mi stampa tutti i report
se invece metto così:
    DefaultPrinter = GetDefaultPrinter()
    SetDefaultPrinter ("Acrobat PDFWriter")
   DoCmd.OpenReport "StampaPreventivoN", acViewNormal, stLinkCriteria
     SetPdfFileName (strFileName) il  file .ini creato nel win\system
non conta + nulla e mi si apre la finestra di Acrobat.
Nel file .ini, si può mettere: Author, Nomesocietà  ecc. nelle
proprieta del file pdf?


Ciao Davide.
Il codice che ti ho fornito è un esempio funzionante.
Il ciclo For serve all'esempio solo per generare cinque reports con cinque
nomi di file diversi. Però l'ordine del salvataggio della stampante
predefinita, l'impostazione della stampante PDF, la generazione del file PDF
e il ripristino della stampante predefinita NON DEVE CAMBIARE, diversamente
si verificano i problemi che mi hai segnalato. Prova ad allungare il valore
del secondo ciclo For, in modo che il sistema abbia più tempo per rilasciare
il file .INI. Sul mio pc, così com'è, è già abbastanza lento.
Ciao
Eugenio

 Il codice funziona, ma forse non mi sono spegato bene:
se il report e assocaito ad una tabella in qui non ci sono
solo fatture ma anche D.D.T., quindi invece di stampare 80
fatture ne stampa 150 in un unico file conpresi i D.D.T. e altri documenti.
Secondo te, se genero delle tabelle e gli sparo dentro
solo fe fatture, secondo te risolvo il problema?
O se hai un'idea...
Ciao, Davide


Il problema sicuramente non è docuto alla conversione in PDF.
In sostanza dipende da come sono state strutturate le tabelle e come è stato
sviluppato il programma.
Idee francamente non ne ho, però sono sicuro che, girandoci intorno,
troverai la soluzione.
Ciao
Eugenio

 Grazie, ci riuscirò.
Tre tabelle: testata- corpo e calce.
Sai, è un gestionale molto vasto.
Sto soppiantando la Zucchetti...
Eugenio, tu cosa fai nella vita? Programmatore?
Ciao, Davide