Newsgroup: it.comp.appl.access
Titolo: Aprire un file .Pdf specifico in base al record selezionato

Ciao a tutti.Scusate la domanda (per voi) forse banale ma no mi
raccapezzo piu'.Ho una cartella specifica dove salvo in automatico dei
files in formato Pdf.Ogniuno di questi files ha come nome il nome del
cliente.Mi piacerebbe dal form "clienti" in base al record selezionato
aprire il file specifico: Es: Record "Rossi Giacomo"
Apertura file RossiGiacomo.pdf
NB Ho provato con la funzione Shell , con Shell executive, con
Hyperlink,ma ....niente da fare.Sicuramente sbaglio qualcosa
Grazie in anticipo
Dino


metti questa funzione in un modulo
Function fHandleFile(stFile As String, lShowHow As Long)
Dim lret As Long, varTaskID As Variant
Dim stRet As String
     'First try ShellExecute
     lret = apiShellExecute(hWndAccessApp, vbNullString, _
             stFile, vbNullString, vbNullString, lShowHow)
     If lret > ERROR_SUCCESS Then
         stRet = vbNullString
         lret = -1
     Else
         Select Case lret
             Case ERROR_NO_ASSOC:
                 'Try the OpenWith dialog
                 varTaskID = Shell("rundll32.exe 
shell32.dll,OpenAs_RunDLL " _
                         & stFile, WIN_NORMAL)
                 lret = (varTaskID <> 0)
             Case ERROR_OUT_OF_MEM:
                 stRet = "Error: Out of Memory/Resources. Couldn't Execute!"
             Case ERROR_FILE_NOT_FOUND:
                 stRet = "Error: File not found.  Couldn't Execute!"
             Case ERROR_PATH_NOT_FOUND:
                 stRet = "Error: Path not found. Couldn't Execute!"
             Case ERROR_BAD_FORMAT:
                 stRet = "Error:  Bad File Format. Couldn't Execute!"
             Case Else:
         End Select
     End If
     fHandleFile = lret & _
                 IIf(stRet = "", vbNullString, ", " & stRet)
End Function
e per richiamare il tuo pdf:
  Dim X As Variant
     X = fHandleFile("percorso del tuo file", WIN_NORMAL)
  End If
"percorso del tuo file" lo cambi con  me.nomecliente o 
replace(me.nomecliente," ","") in base a come memorizzi il nome del file 
con spazi o no
ciao
BFS


Super grazie per la risp.
Un problema,mi da errore per quando concerne WIN_NORMAL."Variabile non
definita"
Definendola Dim WIN_NORMAL,oppure Dim WIN_NORMAL As String mi da come
segnalazione "Tipo non corrispondente per l'argomento Byref"
Grazie Dino

 Grazie Dino
scusami non ti ho incollato le costanti...aggiungi al modulo queste
Public Const WIN_NORMAL = 1         'Open Normal
Public Const WIN_MAX = 2            'Open Maximized
Public Const WIN_MIN = 3            'Open Minimized
Private Const ERROR_SUCCESS = 32&
Private Const ERROR_NO_ASSOC = 31&
Private Const ERROR_OUT_OF_MEM = 0&
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&
ciao
BFS

 - Mostra testo citato -
Scusami tu......avrei dovuto arrivarci anch'io.Ho inserito le costanti
nel modulo,ma non e' cambiato nulla,mi da ancora "Variabile non
definita".Io nel mio controllo
ho inserito :
Dim X As Variant
     X = fHandleFile(Replace(Me.Cliente, " ", ""), WIN_NORMAL)
  End If
E' corretto??
Dino


se hai messo questa
Public Const WIN_NORMAL = 1
non può dirti variabile non definita..sicuro di aver messo "Public" davanti?
ciao
BFS


se fai questo:
Dim X As Variant
X = fHandleFile("percorso del tuo file", 1)
ti da errore ancora?
BFS


Le ho provate tutte e mi da sempre errore.Di seguito ti riporto il
codice inserito nel modulo:
Function fHandleFile(stFile As String, lShowHow As Long)
Dim lret As Long, varTaskID As Variant
Dim stRet As String
Public Const WIN_NORMAL = 1         'Open Normal
Public Const WIN_MAX = 2            'Open Maximized
Public Const WIN_MIN = 3            'Open Minimized
Private Const ERROR_SUCCESS = 32&
Private Const ERROR_NO_ASSOC = 31&
Private Const ERROR_OUT_OF_MEM = 0&
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&


     fHandleFile = lret & _
                 IIf(stRet = "", vbNullString, ", " & stRet)
End Function
E adesso il codice che inserisco nel pulsante di comando sull'evento
click:
Dim X As Variant
     X = fHandleFile(Replace(Me.Cliente, " ", ""), WIN_NORMAL)
End Sub
Dino

 End Sub
facciamo un po' d'ordine:
1)creati un modulo pubblico
2)incollaci dentro questo
Option Compare Database
Public Const WIN_NORMAL = 1         'Open Normal
Public Const WIN_MAX = 2            'Open Maximized
Public Const WIN_MIN = 3            'Open Minimized
Private Const ERROR_SUCCESS = 32&
Private Const ERROR_NO_ASSOC = 31&
Private Const ERROR_OUT_OF_MEM = 0&
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&
Private Declare Function apiShellExecute Lib "shell32.dll" _
     Alias "ShellExecuteA" _
     (ByVal hwnd As Long, _
     ByVal lpOperation As String, _
     ByVal lpFile As String, _
     ByVal lpParameters As String, _
     ByVal lpDirectory As String, _
     ByVal nShowCmd As Long) _
     As Long
Function fHandleFile(stFile As String, lShowHow As Long)
Dim lret As Long, varTaskID As Variant
Dim stRet As String
      'First try ShellExecute
      lret = apiShellExecute(hWndAccessApp, vbNullString, _
              stFile, vbNullString, vbNullString, lShowHow)
      If lret > ERROR_SUCCESS Then
          stRet = vbNullString
          lret = -1
      Else
          Select Case lret
              Case ERROR_NO_ASSOC:
                  'Try the OpenWith dialog
                  varTaskID = Shell("rundll32.exe 
shell32.dll,OpenAs_RunDLL " _
                          & stFile, WIN_NORMAL)
                  lret = (varTaskID <> 0)
              Case ERROR_OUT_OF_MEM:
                  stRet = "Error: Out of Memory/Resources. Couldn't"
              Case ERROR_FILE_NOT_FOUND:
                  stRet = "Error: File not found.  Couldn't Execute!"
              Case ERROR_PATH_NOT_FOUND:
                  stRet = "Error: Path not found. Couldn't Execute!"
              Case ERROR_BAD_FORMAT:
                  stRet = "Error:  Bad File Format. Couldn't Execute!"
              Case Else:
          End Select
      End If
      fHandleFile = lret & _
                  IIf(stRet = "", vbNullString, ", " & stRet)
End Function
3)sul pulsante della tua form incolla questo
Dim X As Variant
      X = fHandleFile(Replace("calc.exe", " ", ""), WIN_NORMAL)
deve funzionare!
ciao
BFS

 Dino
ti ho mandato in mail un esempio
ciao!

 - Mostra testo citato -
E' giusto da parte mia chiudere il post ringraziando BFS per avermi
risolto il problema.
Dino