Newsgroup: it.comp.appl.access
Titolo: Inviare pdf da pulsante di comando

Ciao a tutti,
per stampare un pdf, salvandolo (con nome cliente) in una cartella
prestabilita e allegarlo ad una mail pronto da inviare, tutto questo
cliccando su un pulsante di comando ho utilizzato il seguente codice:
Option Compare Database
Option Explicit
' Aggiungi il riferimento a PDFCreator
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As
Long)
Private Const maxTime = 10    ' in seconds
Private Const sleepTime = 250 ' in milliseconds
Public Function Start1()
 PrintRep "NomeMioReport"
End Function
Public Sub PrintRep(RepName As String)
 Dim PDFCreator1 As PDFCreator.clsPDFCreator, DefaultPrinter As
String, c As Long, OutputFilename As String
 Dim DirSalvataggio As String
 Dim NomeFile As String
 Dim MailDestinatario As String
 DirSalvataggio = "PercorsoDellaCartellaInCuiSalvareilPdf"
 NomeFile = Forms![NomeMiaMaschera].
[NomeControlloConilQualeNominareilPdf]
 MailDestinatario = "IndirizzoEmailAlQualeSpedire"
 Set PDFCreator1 = New clsPDFCreator
 With PDFCreator1
  .cStart "/NoProcessingAtStartup"
  .cOption("UseAutosave") = 1
  .cOption("UseAutosaveDirectory") = 1
  .cOption("AutosaveDirectory") = DirSalvataggio
    .cOption("AutosaveFilename") = NomeFile
    .cOption("AutosaveFormat") = 0
 ' 0 = PDF
  DefaultPrinter = .cDefaultPrinter
  .cDefaultPrinter = "PDFCreator"
  .cClearCache
 DoCmd.OpenReport "NomeMioReport", , , "CampoID(nel mio caso numerico
e non contatore)dellaTabellaDiOrigineDelReport =" & _
 Forms![NomeMiaMaschera].[CampoID(nel mio caso numerico e non
contatore)dellaTabellaDiOrigineDellaMaschera]
  .cPrinterStop = False
 End With
 c = 0
 Do While (PDFCreator1.cOutputFilename = "") And (c < (maxTime *
1000 / sleepTime))
  c = c + 1
  Sleep 200
 Loop
 OutputFilename = PDFCreator1.cOutputFilename
 'Invia MAIL con allegato
 With PDFCreator1
  .cDefaultPrinter = DefaultPrinter
  Sleep 200
  .cSendMail OutputFilename, MailDestinatario
  .cClose
 End With
 Sleep 2000 ' Wait until PDFCreator is removed from memory
 If OutputFilename = "" Then
  MsgBox "Creating pdf file." & vbCrLf & vbCrLf & _
   "An error is occured: Time is up!", vbExclamation + vbSystemModal
 End If
End Sub
E' un codice che avevo già utilizzato su un altro db e funzionava, ora
però sembra non vedere più il persorso nel quale deve salvare il pdf
(DirSalvataggio = "PercorsoDellaCartellaInCuiSalvareilPdf") e quindi
mi chiede dove salvarlo, non lo nomina in automatico (NomeFile = Forms!
[NomeMiaMaschera].[NomeControlloConilQualeNominareilPdf]) e mi chiede
di nominarlo e in più una volta salvato, apre il messaggio e-mail da
inviare ma non ci allega il pdf.
Qualcuno sa per caso aiutarmi ad individuare il problema?
Grazie mille.
Myc

 ha scritto nel messaggio news:1185349126.4...@o61g2000hsh.googlegroups.com...
Ciao a tutti,
per stampare un pdf, salvandolo (con nome cliente) in una cartella
prestabilita e allegarlo ad una mail pronto da inviare, tutto questo
cliccando su un pulsante di comando ho utilizzato il seguente codice:
---omissis---
E' un codice che avevo già utilizzato su un altro db e funzionava, ora
però sembra non vedere più il persorso nel quale deve salvare il pdf
(DirSalvataggio = "PercorsoDellaCartellaInCuiSalvareilPdf") e quindi
mi chiede dove salvarlo, non lo nomina in automatico (NomeFile = Forms!
[NomeMiaMaschera].[NomeControlloConilQualeNominareilPdf]) e mi chiede
di nominarlo e in più una volta salvato, apre il messaggio e-mail da
inviare ma non ci allega il pdf.
Qualcuno sa per caso aiutarmi ad individuare il problema?
Grazie mille.
Myc
[risposta]
Parli di "altro db"; intendi che in un altro pc e magari con altra versione di access, la tua applicazione funzionava ed ora, in un 
altro ambiente no?
Ciao.
-- 
Sergio MAZZA 


No, prima di fare il database che sto facendo ora e per il qual mi
serve l'indicazione richiesta, ne ho fatto uno di prova con le stesse
funzioni però fatto un pò a casaccio, con le tabelle fatte senza
"regole di normalizzazione" con un sacco di dati ripetuti etc (ps: è
il primo che faccio)...in questo db il codice che ho scritto funziona
perfettamente, stesso pc, stessa versione di Access (2003).
Ora lo sto rifacendo tentando di attenermi un pò a queste regole (per
quel che ne so) e questo codice non funziona più.
Grazie
Myc

 ha scritto nel messaggio 
news:1185438369....@w3g2000hsg.googlegroups.com...
No, prima di fare il database che sto facendo ora e per il qual mi
serve l'indicazione richiesta, ne ho fatto uno di prova con le stesse
funzioni perň fatto un pň a casaccio, con le tabelle fatte senza
"regole di normalizzazione" con un sacco di dati ripetuti etc (ps: č
il primo che faccio)...in questo db il codice che ho scritto funziona
perfettamente, stesso pc, stessa versione di Access (2003).
Ora lo sto rifacendo tentando di attenermi un pň a queste regole (per
quel che ne so) e questo codice non funziona piů.
Grazie
Myc
[risposta]
Non credo sia un problema di tabelle; prova ad importare le nuove tabelle 
nell'mdb che funzionava...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ho provato, fa la stessa cosa, tra l'altro ho notato che nella
versione fuzionante stampa il pdf con Pdf Creator, mentre nella
versione errata utilizza AcrobatPdfWriter, come se non trovasse il
riferimento a Pdf Creator...però c'è.
Myc

 ha scritto nel messaggio 
news:1185454310....@o61g2000hsh.googlegroups.com...
Ho provato, fa la stessa cosa, tra l'altro ho notato che nella
versione fuzionante stampa il pdf con Pdf Creator, mentre nella
versione errata utilizza AcrobatPdfWriter, come se non trovasse il
riferimento a Pdf Creator...perň c'č.
Myc
[risposta]
Rimuovi l'acrobat e vedi che succede...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Fatto, funziona!
Grazie mille.
Myc

Ciao, scusa...mi si ripresenta un altro problema.
Su un'altra maschera ho ricreato una situazione simile impostando
nell'evento clik della scheda eventi del pulsante di comando [rourine
evento]:
Private Sub Comando112_Click()
Call Start1
End Sub
ho copiato il codice dei post precedenti che ora, dopo aver tolto
AcrobatPdfWrite, funziona e ho cambiato le variabili:
Option Compare Database
Option Explicit
' Aggiungi il riferimento a PDFCreator
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As
Long)
Private Const maxTime = 10    ' in seconds
Private Const sleepTime = 250 ' in milliseconds
Public Function Start1()
 PrintRep "RpOrdineDiStampa"
End Function
Public Sub PrintRep(RepName As String)
 Dim PDFCreator1 As PDFCreator.clsPDFCreator, DefaultPrinter As
String, c As Long, OutputFilename As String
 Dim DirSalvataggio As String
 Dim NomeFile As String
 Dim MailDestinatario As String
 DirSalvataggio = "C:\Documents and Settings\m.iannetti.IDRA\Documenti
\PROVA"
 NomeFile = Forms![MsOrdineDiStampa].[SoggettoGrafico]
 MailDestinatario = Forms!MsOrdineDiStampa.Email
 Set PDFCreator1 = New clsPDFCreator
 With PDFCreator1
  .cStart "/NoProcessingAtStartup"
  .cOption("UseAutosave") = 1
  .cOption("UseAutosaveDirectory") = 1
  .cOption("AutosaveDirectory") = DirSalvataggio
    .cOption("AutosaveFilename") = NomeFile
    .cOption("AutosaveFormat") = 0
 ' 0 = PDF
  DefaultPrinter = .cDefaultPrinter
  .cDefaultPrinter = "PDFCreator"
  .cClearCache
  DoCmd.OpenReport "RpOrdineDiStampa", , , "IDOrdineDiStampa = " & _
  Forms![MsOrdineDiStampa].[IDOrdineDiStampa]
  .cPrinterStop = False
 End With
 c = 0
 Do While (PDFCreator1.cOutputFilename = "") And (c < (maxTime *
1000 / sleepTime))
  c = c + 1
  Sleep 200
 Loop
 OutputFilename = PDFCreator1.cOutputFilename
 'Invia MAIL con allegato
 With PDFCreator1
  .cDefaultPrinter = DefaultPrinter
  Sleep 200
  .cSendMail OutputFilename, MailDestinatario
  .cClose
 End With
 Sleep 2000 ' Wait until PDFCreator is removed from memory
 If OutputFilename = "" Then
  MsgBox "Creating pdf file." & vbCrLf & vbCrLf & _
   "An error is occured: Time is up!", vbExclamation + vbSystemModal
 End If
End Sub
Fa la stessa cosa che faceva prima, solo che anzichè utilizzare
AcrobatPdfWrite (che non c'è più) invia la stampa alla stampante...non
capisco, hai un'idea del motivo?
Grazie mille
Myc


Era sufficiente impostare, per quel report, la stampante PdfCreator,
lanciando al stampa direttamenre dal Menù File, evabhè, meglio tardi
che mai.
Myc