Newsgroup: it.comp.appl.access
Titolo: Immagine collegata in access 2007

Ciao a tutti,
ho creato una maschera del personale dipendente e copiando un modulo
che ho trovato in rete sono riuscito a collegare la foto, formato jpg,
di ogni dipendente nella maschera.
Nella maschera ho una cornice Immagine (ImageFrame), dove si vede la
foto, ed un campo txt (txtImageName), in cui vado ad inserire il
percorso dove si trova la foto collegata.
Ora vorrei capire come si fà con un CmdButton ad inserire il percorso
senza doverlo scrivere ogni volta che aggiungo un nuovo dipendente.
Grazie


in un modulo codia il seguente codice:
Option Compare Database
Option Explicit
'Dichiarazioni
 Private Declare Function GetOpenFileName Lib "comdlg32.dll" _
             Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME)
As Long
 Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    Flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
 End Type
 Public Function cmdlg_file(sInitDir As String, sFilter As String)
    Dim OpenFile As OPENFILENAME
    Dim lReturn As Long
    OpenFile.hwndOwner = Application.hWndAccessApp
    OpenFile.lStructSize = Len(OpenFile)
    OpenFile.lpstrFilter = sFilter
    OpenFile.nFilterIndex = 1
    OpenFile.lpstrFile = String(257, 0)
    OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
    OpenFile.lpstrFileTitle = OpenFile.lpstrFile
    OpenFile.nMaxFileTitle = OpenFile.nMaxFile
    OpenFile.lpstrInitialDir = sInitDir
    OpenFile.lpstrTitle = "Selezione"
    OpenFile.Flags = 0
    lReturn = GetOpenFileName(OpenFile)
    If lReturn = 0 Then
       cmdlg_file1 = ""
    Else
       cmdlg_file1 = Left(OpenFile.lpstrFile,
InStr(OpenFile.lpstrFile, Chr$(0)) - 1)
    End If
 End Function
poi nel tuo pulsante :
Dim strDatabase As String
    strDatabase = cmdlg_file()
    If strDatabase = "" Then Exit Sub
    Me.percorso = strDatabase ' (il percorso e il campo dove inserisci
il percorso).
Ciao


Ps. Chiedo scusa devi eliminare il numero 1su cmdlg_file1 deve essere
cmdlg_file
Ciao

 - Mostra testo citato -
Innanzitutto grazie,
ho copiato il tuo codice sia nel modulo (l'ho nominato modulo2) che
nel pulsante, ma quando clicco sul pulsante si apre la finestra VB e
sulla riga
    strDatabase = cmdlg_file()
mi appare l'errore di compilazione: argomento non facoltativo.
Scusa l'ignoranza ma non capisco che cosa manca.
Ciao e grazie


Manca il riferimento dao 3.6, apri il modulo , vai in strumenti e
riferimenti , ricerca e attiva Microsoft dao 3.6
Ciao


Ho messo la spunta sul riferimento Microsoft dao 3.6, ma ricevo lo
stesso messaggio di prima.
P.S.
nella maschera ho anche un campo txt non associato, chiamato
txtImageNote, dove mi appare la nota se l'immagine c'è o non è stata
trovata. Può influire anche quello?
grazie e ciao

Allora ricapitoliamo:
 nel modulo copio il seguente codice:
Option Compare Database
Option Explicit
Private Declare Function GetOpenFileName Lib "comdlg32.dll" _

Public Function cmdlg_file() As String
   'Restituisce: il percorso completo del file selezionato
   Dim OpenFile As OPENFILENAME
   Dim lReturn As Long
   Dim sFilter As String
   OpenFile.lStructSize = Len(OpenFile)
   sFilter = "Database di Microsoft Access (*.*)" & Chr(0) & "*.*" &
Chr(0)
   OpenFile.lpstrFilter = sFilter
   OpenFile.nFilterIndex = 1
   OpenFile.lpstrFile = String(257, 0)
   OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
   OpenFile.lpstrFileTitle = OpenFile.lpstrFile
   OpenFile.nMaxFileTitle = OpenFile.nMaxFile
   OpenFile.lpstrInitialDir = "C:\"
   OpenFile.lpstrTitle = "Seleziona file"
   OpenFile.Flags = 0
   lReturn = GetOpenFileName(OpenFile)
   If lReturn = 0 Then
      cmdlg_file = ""
   Else
      cmdlg_file = Left(OpenFile.lpstrFile, InStr(OpenFile.lpstrFile,
Chr$(0)) - 1)
   End If
End Function
nel pulsante della maschera:
Dim strDatabase As String
    strDatabase = cmdlg_file()
    If strDatabase = "" Then Exit Sub
    Me.percorso = strDatabase
e attivo il riferimento dao 3.6
Ps. ricopia la funzione nel modulo spesso copiando e incollando salta
qualcosa
Ciao


Funziona perfettamente ora, ancora grazie mille
Ciao