Newsgroup: it.comp.appl.access
Titolo: creazione file .pdf

ciao a tutti. scusate il disturbo.....
cercando su google riguardo la creazione di file pdf da report access ho
trovato una risposta di ENRICO T.S. del 22 febbraio!!!!
ho provato ad usare il codice indicato ma ci sono 2 funzioni che non vengono
dichiarate (WriteValueEx e RegCloseKey) oppure sbaglio qualche cosa io!!!!!
avrei bisogno di qualche delucidazione da qualcuno che conosce
l'argomento......
vi ringrazio in anticipo.
posto il messaggio da cui ho preso il codice:
-------------------------------------------------------------------------------------
Allora ....
se sai già come impostare in automatico la stampante
Pdf Writer, sei già un pezzo avanti, se non lo sai ti consiglio
di visitare il sito comune e cercare come impostare la stampante di default.
Fatto questo ti dico come io ho risolto il tuo problema in una mia
applicazione. Il segreto e' di utilizzare il registro di Windows (cosa non
documentata da Adobe)
andando a scrivere il nome del file da utilizzare per la creazione del file
Pdf.
Crea un modulo vuoto ed incollaci le seguenti righe:
Global Const REG_SZ As Long = 1
Global Const REG_DWORD As Long = 4
Global Const HKEY_CLASSES_ROOT = &H80000000
Global Const HKEY_CURRENT_USER = &H80000001
Global Const HKEY_LOCAL_MACHINE = &H80000002
Global Const HKEY_USERS = &H80000003
Global Const ERROR_NONE = 0
Global Const ERROR_BADDB = 1
Global Const ERROR_BADKEY = 2
Global Const ERROR_CANTOPEN = 3
Global Const ERROR_CANTREAD = 4
Global Const ERROR_CANTWRITE = 5
Global Const ERROR_OUTOFMEMORY = 6
Global Const ERROR_INVALID_PARAMETER = 7
Global Const ERROR_ACCESS_DENIED = 8
Global Const ERROR_INVALID_PARAMETERS = 87
Global Const ERROR_NO_MORE_ITEMS = 259
Global Const KEY_ALL_ACCESS = &H3F
Global Const REG_OPTION_NON_VOLATILE = 0
Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" _
   (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, _
   ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As
Long, _
   ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As
Long) As Long
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
   (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
   ByVal samDesired As Long, phkResult As Long) As Long
Sub Reg_Scrivi(lPredefinedKey As Long, sKeyName As String, sValueName As
String, _
                  vValueSetting As Variant, lValueType As Long)
   Dim lRetVal As Long
   Dim hKey As Long
   lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS, hKey)
   lRetVal = WriteValueEx(hKey, sValueName, lValueType, vValueSetting)
   RegCloseKey (hKey)
End Sub
-------------------------
a queto punto chiudi e salva tutto.
Ora puoi utilizzare la funzione Reg_Scrivi ovunque ti serva nel modo
seguente
call Reg_Scrivi(HKEY_CURRENT_USER, "Software\Adobe\Acrobat PDFWriter",
"PDFFilename", NomeFile, REG_SZ)
ti bastera' assegnare alla variabile NomeFile il pathname del file che
vorrai creare
una volta impostato acrobat writer come stampante predefinita (ed attento
che
nell'installazione base di acrobat il device di stampa non e' incluso, ma
devi
dirlo tu di installarlo, in pratica devi avere in elenco stampanti la
stampante "Acrobat PdfWriter") una volta impostato dicevo puoi lanciare la
funzione
e mandare in stampa il report, verrà creato in automatico senza richieste.
Ricorda di azzerare il valore del registro dopo stampato , altrimenti
Acrobat non chiedera'
piu come chiamare il file ma useraì il nome che ci hai memorizzato.
Good Work
Bye :o)
--------------------------------
Inviato via 
http://usenet.libero.it

CUT
queste le dichiarazioni da aggiungere:
Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal
hKey As Long) As Long
e
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA"
(ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long,
ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Quest'ultima mi sembra la più logica visto che
WriteValueEx non la conosco nè l'ho trovata tra le dichiarazioni di
"advapi32.dll".
Ciao, Carlo


--------------------------------
Inviato via 
http://usenet.libero.it


Prova ad usare zero per ByVal Reserved e lasciare vuoto (stringa di
lunghezza zero) lpData .
Fai delle prove. Per esempio al posto di:
lRetVal = WriteValueEx(hKey, sValueName, lValueType, vValueSetting)
scrivi:
lRetVal = RegSetValueEx(hKey, sValueName, 0, lValueType, "" , vValueSetting)
Ti ricordo che quando si lavora sul registro è bene farne sempre una copia.
Ciao, Carlo


--------------------------------
Inviato via 
http://usenet.libero.it

 grazie ora provo!!!!!!!!!
Prova invece a scrivere DOPO il quoting
MAssimiliano
