Newsgroup: it.comp.appl.access
Titolo: Urgente. Visualizzare immagini in sottomaschera sincronizzata facendo leggere percorso e nome file da query

Access 2003 / 2010
 
Buongiorno a tutto il news.
 
Ho riscontrato un problema che non riesco ad individuare, non riesco a far 
visualizzare le immagini (circa 2500 immagini) sia in un PC a 32 che a 64 
bit.
 
Il punto � che utilizzando il codice indicato sotto ho effettuato altri tre 
database che funzionano benissimo, l'unica differenza � che con questo 
codice, (se ben ricordo ereditato dal sito comune (ringrazio l'autore) 
inserisco il perscorso scegliendo limmagine. Il punto �, vista l'urgenza, 
non posso mettermi ad inserire 2500 foto ma creando da query il percorso + 
nome file e aggiungendo ".JPG" non riesco a far leggere la foto associata al 
record man mano che li scorro.
Ho provato anche con altro codice trovato in rete, compreso quello del 
supporto, ma nulla da fare, ache se devo dire, per la verit�, che veniva 
esposto come codice per vecchie versioni di Access.
Ho passato quasi tutta la notte in bianco. Non riesco a capire cosa mi 
sfugge.
Avete idea su come risolvere. Spero in un vostro celere aiuto.
Grazie, Bruno
 
 
 
Codice nella sottomaschera:
 
Private Sub Form_AfterUpdate()
    On Error Resume Next
     Me!Foto.Picture = Me.ImagePath                            ' 
"C:\Foto_Strumenti\" & Me!FotoStrumento
    Me.Refresh
End Sub
 
Private Sub Form_Current()
On Error Resume Next
     Me!Foto.Picture = Me.ImagePath                            ' 
"C:\Foto_Strumenti\" & Me!FotoStrumento
    Me.Refresh
End Sub
 
 
Codice nel modulo:
 
 
Option Compare Database
Option Explicit
 
Private Declare PtrSafe 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()
 
   Dim OpenFile As OPENFILENAME
   Dim lReturn As Long
   Dim sFilter As String
 
   OpenFile.lStructSize = Len(OpenFile)
 
   sFilter = "Immagini (*.wmf,*.bmp,*.jpg,*.tif,*.gif)" & Chr(0) & 
"*.wmf;*.bmp;*.jpg;*.tif;*.gif" & Chr(0)
 
   OpenFile.hwndOwner = Application.hWndAccessApp
   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
 
    'Apre la foto se indicato il percorso della cartella che la contiene.
   OpenFile.lpstrInitialDir = "C:\Foto_Strumenti"
   OpenFile.lpstrTitle = "Selezione"
   OpenFile.flags = 0
   lReturn = GetOpenFileName(OpenFile)
 
   If lReturn = 0 Then
      cmdlg_file = ""
 
   Else
      cmdlg_file = Left(OpenFile.lpstrFile, InStr(OpenFile.lpstrFile, 
Chr$(0)) - 1)
 
      'Forms![frm_Inventario]![Sfrm_FotoInventario].[Form]![ImagePath] = 
cmdlg_file
      Forms![Sfrm_FotoInventario].[ImagePath] = cmdlg_file
 
   End If
End Function
 
 
 
 


[CUT]
 
 
Ho provato ad usare anche quento riportato in questo link del supporto.
 
http://support.microsoft.com/kb/210100/it
 
 
Non vorrei che lavorasse solo con i file bmp e non anche i file JPG
 
Ciao 
 
 

 ha scritto nel messaggio 
news:514ac28a$0$37131$4faf...@reader1.news.tin.it...

^^^^^^^^^^^^^^^
 
Ho fatto un ulteriore tentativo, con un db funzionante che utilizza il 
codice postato. Se inserisco un'immagine JPG attraverso il pulsante che mi 
apre la finestrella del percorso, allora memorizza la foto e la visualizza, 
na se creo il percorso in tabella (scrivendolo fisicamente) o lo creo con 
una query, allora non mi visualizza nulla nello scorrere dei record. Ho 
anche provato a mettergli una foto per valorizzare il controllo immagine 
all'inizio (come scritto nella pagina del  supporto); l'immagine la mostra e 
quindi il controllo funziona, ma non cambia allo scorrere dei record.
La cosa mi sta facendo impazzire, chiss� cosa mi sfugge.
Bruno
 
 
 
 
http://support.microsoft.com/kb/210100/it
 
 
 

> [CUT]
 
 
Miei cari del news, non so piu cosa fare; ho provato anche queste righe di 
codice, senza risolvere nulla. Mi visualizza l'immagine 0.JPG (una rosa) ma 
non visualizza le altre immagini quando scorro i record, infatti la rosa 
resta piantata li ad ogni scorrimento. Da ricovero!
Help me
Grazie, Bruno
 
 
Private Sub Form_AfterUpdate()
 
If Dir("C:\Foto_Strumenti\" & Me![INV_SIC] & ".jpg") = "" Or Me![INV_SIC] & 
".jpg" = 0 Or Me![INV_SIC] & ".jpg" = "" Or IsNull(Me![INV_SIC] & ".jpg") = 
True Then
        Me!Foto.Picture = "C:\Foto_Strumenti\0.jpg"
    Else
        Foto.Picture = "C:\Foto_Strumenti\" & Me![INV_SIC] & ".jpg"
    End If
 
End Sub
 
Private Sub Form_Current()
 
 
If Dir("C:\Foto_Strumenti\" & Me![INV_SIC] & ".jpg") = "" Or Me![INV_SIC] & 
".jpg" = 0 Or Me![INV_SIC] & ".jpg" = "" Or IsNull(Me![INV_SIC] & ".jpg") = 
True Then
         Me!Foto.Picture = "C:\Foto_Strumenti\0.jpg"
    Else
        Foto.Picture = "C:\Foto_Strumenti\" & Me![INV_SIC] & ".jpg"
    End If
 
 
End Sub 
 
 


 Nulla da fare, nella cornice immagine non appare nulla allo scorrimento dei 
record.
Ho creato una form di sana pianta, utilizzando il codice seguente, senza 
riuscire.
Ho provato con il percorso completo    Me!Percorso   e C:\Foto_Strumenti\" & 
Me!Percorso (nome file, es. 00001.JPG)
Nulla da fare.
Spero in un aiuto. Non so se pu� essere un problema di riferimenti o altro. 
Ho controllato per il DAO e sembra OK.
Ciao, Bruno
 
 
Private Sub Form_Current()
On Error Resume Next
Me!Immagine1.Picture = Me!Percorso '"C:\Foto_Strumenti\" & Me!Percorso
End Sub
 
Private Sub Percorso_AfterUpdate()            'casella dove � inserito il 
percorso
On Error Resume Next
Me!Immagine1.Picture = Me!Percorso '"C:\Foto_Strumenti\" & Me!Percorso
End Sub
 
 

 
 
"Bruno - S95"  ha scritto nel messaggio 
news:514af335$0$37121$4faf...@reader1.news.tin.it...

^^^^^^^^^^^^^^^^^^^^^^
 
Ho risolto. Chiedo infinitamente scusa, il problema era nel codice delle 
immagini; mi � stato detto che in un dato campo vi erano i codici numerici 
delle foto e che corrispondevano al loro nome. cos� non era e non �; i 
codici si diferenziano perch� mancano degli zeri nel campo che mi � stato 
segnalato, pertanto Access, ancora una volta aveva ragione a non trovare le 
immagini. Ora funziona tutto-
Scusate ancora per il procurato allarme.
Saluti, Bruno
 

Giuro che non ho capito nulla... ma se il tuo intento è caricare
un'immagine in un controllo Immagine in una form visualizzazione
CONTINUA, hai un problema.... NON E' POSSIBILE.
 
In Form continue puoi farlo solo se hai un controllo associato ad un
campo OLE nella tabella.
 
Aggiungo, ma magari non ti serve, che le immagini devono essere in
formato BMP, tu carichi sempre JPG, questo impone l'uso per ACCESS dei
filtri di conversione, cosa non gestibile in caso di RUNTIME in quanto
i filtri non fanno parte del pacchetto di distribuzione.
 
Aggiungo che questa sintassi è sbagliata:
 
        Me!Immagine1.Picture = Me!Percorso '"C:\Foto_Strumenti\" & Me!
Percorso
 
credo che quella giusta possa essere questa:
        Me!Immagine1.Picture ="C:\Foto_Strumenti\" & Me!Percorso
 
Aggiungo che c'è moltissima confusione.
 
@Alex

 ha scritto nel messaggio 
news:71196e0d-350a-42df...@7g2000yqy.googlegroups.com...
Giuro che non ho capito nulla... ma se il tuo intento � caricare
un'immagine in un controllo Immagine in una form visualizzazione
CONTINUA, hai un problema.... NON E' POSSIBILE.
 
In Form continue puoi farlo solo se hai un controllo associato ad un
campo OLE nella tabella.
 
Aggiungo, ma magari non ti serve, che le immagini devono essere in
formato BMP, tu carichi sempre JPG, questo impone l'uso per ACCESS dei
filtri di conversione, cosa non gestibile in caso di RUNTIME in quanto
i filtri non fanno parte del pacchetto di distribuzione.
 
Aggiungo che questa sintassi � sbagliata:
 
        Me!Immagine1.Picture = Me!Percorso '"C:\Foto_Strumenti\" & Me!
Percorso
 
credo che quella giusta possa essere questa:
        Me!Immagine1.Picture ="C:\Foto_Strumenti\" & Me!Percorso
 
Aggiungo che c'� moltissima confusione.
 
@Alex
 
^^^^^^^^^^^^^^^^^^^^^
 
Caro Alex, dopo tanto tempo ho ripreso a frequentareil news e gi� ti faccio 
disperare.
Colgo l'occasione di ringraziare te e gli altri guru unformatici per l'aiuto 
che avete sempre dato a me e agli altri bisognosi; sicuramente a me che sono 
con le idee confuse.
Comunque, in una maschera singola con questo codice funziona benissimo; 
visualizza perfettamente l'immagine JPG associata al record. Interessante 
quanto hai detto dei filtri di conversione.... ti chiedo dove posso 
visualizzarli o impostarli questi filtri... giusto per capire. Per quanto 
riguarda la sintassi sbagliata, qual � quella corretta? Probabilmente ti 
riferisci all'esclamativo !; avrei dovuto mettere il punto. Francamente non 
ho capito perch� a volte viene utilizzato il  Me!xxxxxxx ed altre volte il 
Me.xxxxxxx per rappresentare il codice. Puoi illuminarmi!
Mille grasie, Bruno
 
 
 
Private Sub Form_Current()
'MsgBox "current"
On Error Resume Next
Dim Percorso As String
Percorso = Me.Percorso 'getImagePath()
 
If IsNull(Me![Percorso]) Then
Me![Immagine1].Picture = ""
Else
                    'If Dir(percorso & Me![percorso]) = "" Then
If Me![Percorso] = "" Then
Me![Immagine1].Picture = ""
Else
                        'Me![Immagine1].Picture = Percorso & Me![Percorso]
Me![Immagine1].Picture = Percorso
End If
End If
 
End Sub
 
 

Cosa non ti è chiaro quando ho detto che non puoi con le maschere
continue...?
 
@Alex
 

 ha scritto nel messaggio 
news:2fac746c-59d1-4919...@l5g2000yqe.googlegroups.com...
Cosa non ti � chiaro quando ho detto che non puoi con le maschere
continue...?
 
@Alex
 
Ciao Alex, se vedi alla fine del terzultimo post ho h presentato le mie 
scuse per il procurato allarme.
 
Ho risolto; l'immagine la vedo sia nella form singola che l'ho resa 
divisibile e quindi con una parte a foglio dati.
 
Mentre in altra form singola ho inserito una sottoform foglio dati, ma 
avendo la necessit� di vedere le immagini di 2500 foto circa, sia relative 
ai record della form principale(senza nessun problema) per i record della 
sottoform sincronizzata ho messo all'interno deela form principale una 
maschera singola con controllo immagine per i record della sottomaschera, ma 
non essendo possibile sincronizzarla su corrente di ogni record 
sottomaschera, ho dovuto utilizzare qualche dlookup per leggere i dati 
necessati a far visualizzare la foto. Unico problema e che devo aggiornare 
facendo doppip click sul controllo del pecorso immagine se cambio record 
nella sottomaschera. Questo perch� mi dava errore se cercavo di aggiornare 
con codice messo nella sottomaschera foglio dati. L'errore era qualcosa come 
oggetto definito non definito dall'utente. Ho cercato di capire anche 
mediante ricerche senza risultato.
 
Spero sia comprensibile quandto ho scritto, perch� scritto di getto.
 
Ciao, Bruno