Newsgroup: it.comp.appl.access
Titolo: Controllo immagine su maschera

Buonasera a tutti!
Sono alle prese con l'inserimento di alcune immagini (collegate, non
incorporate) nel mio db e mi sono un po' persa.
Ho letto gli esempi sul Sito Comune e ho googlato e sono riuscita a fare l'80%
di quello che volevo, ma mi manca ancora qualcosa.
Ho una tabella che si chiama "prodotti" in cui ho inserito un campo testuale in
cui conservare il percorso dell'immagine ("Immagine")
Ho una maschera "prodotti" in cui ho inserito un campo testuale associato al
campo "Immagine" della tabella ("Pathimmagine"), e un controllo immagine non
associato ("MiaImmagine")
Il percorso dell'immagine è "c:\percorso" + "variabile" + ".jpg", dove
"variabile" è il codice del prodotto
Sull'evento On current della maschera ho inserito questo codice:
Private Sub Form_Current()
  On Error Resume Next
  Me.Pathimmagine = mc_strPath & Me.CodiceProdotto.Value & ".JPG"
  If Err.Number = 0 Then
   'Do Nothing
  End If
  Me.Immagine.Picture = Me.Pathimmagine
  End Sub
A questo punto funziona tutto, le immagini appaiono... OK, ma il non tutti i
prodotti che ho registrato hanno una foto. Solo che in questo caso sulla
maschera mi compare sempre l'immagine dell'ultimo prodotto di cui c'era
un'immagine disponibile.
Io invece vorrei che in questo caso accadesse questo:
a) non compaia nessun immagine
oppure
b) mi si aprisse l'immagine "c:\percorso\variabile\blank.jpg"
Capisco che devo inserire una nuova condizione, ma non so come impostarla.
Suggerimenti?
Grazie
Erika
-- 
Per rispondermi... Togli "nospam"
To send me an email... take out "nospam"

 Erika
Ciao Erika,
prova cosě:
Private Sub Form_Current()
     On Error Resume Next
            Me.Pathimmagine = mc_strPath & Me.CodiceProdotto.Value & ".JPG"
              If Err.Number = 0 Then
                    'Do Nothing
              End If
    if Len(dir(Me.Pathimmagine)) > 0  then   'il file esiste
              Me.Immagine.Picture = Me.Pathimmagine
    else
            Me.Immagine.Picture =  ""
            'oppure
             Me.Immagine.Picture = "c:\percorso\variabile\blank.jpg"
  end if
 End Sub
saluti
Cinzia

 ha scritto nel messaggio
news:qvsnn09mo2aregu3i...@4ax.com...

Azzera sempre l'immagine prima di Ripopolarla
e controllando l'esistenza del File la popoli:
Private Sub Form_Current()
     On Error Resume Next
     Me.Immagine.picture=vbnullstring
     Me.Pathimmagine = mc_strPath & Me.CodiceProdotto.Value & ".JPG"
     if Len(dir(Me.Pathimmagine)) > 0  then   'il file esiste
              Me.Immagine.Picture = Me.Pathimmagine
     End if
End Sub
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

Funziona perfettamente!!!!!
Grazie a tutti e due per l'aiuto!
Cercando sul sito comune, poi ho trovato questa funzione
Public Function PathCorrente() As String
    'Autore: Paolo Holzl
    'Restituisce: il percorso completo del database corrente
    PathCorrente = Left(CurrentDb.Name, Len(CurrentDb.Name) -
Len(Dir(CurrentDb.Name)))
End Function
L'ho implementata e ho modificato 
la stringa 
Me.Pathimmagine = mc_strPath & Me.CodiceProdotto.Value & ".JPG"
in
Me.Pathimmagine = PathCorrente() & "img\" & Me.[CodiceProdotto] & ".JPG"
Mi sembra molto meglio e poi... se sposto il db... non devo andarmi a cercare il
percorso a mano.
Vi ringrazio ancora di tutto. so di essere imbranata, ma cerco di migliorare!
Ciao


 ha scritto nel messaggio
news:bb3on0tea6e9e0ds4...@4ax.com...

Se usi A2000 o AXP non c'č bisogno di nulla puoi usare
CurrentProject.Path avendo impostato i Riferimenti ADO.
In ogni caso per ORDINE converrebbe avere una Cartella Immagini nella
quale mette le stesse..... e non sparpagliare tutto dove hai l'applicativo.
Ciao.


quale mette le stesse..... e non sparpagliare tutto dove hai l'applicativo.
Ho una cartella immagini, infatti, solo che non uso solo io il db, e anche se da
me sta una posizione ben precisa (di prestigio, oserei dire :P), le altre due
persone che vi accedono (con replica) lo tengono in posizioni diverse (io sono
su c, loro su altri dischi dati) e posso "imporre" solo la struttura della dir
del database, quindi devo essere sicura che funzioni sempre e cmq.
Diciamo che su tre io sono quella che di access ne sa di piu' (il che è tutto
dire!!!), quindi quando gli passo il db deve funzionare "as is".
Anzi, come dicono loro, "il db l'hai scritto e voluto tu e adesso ti ci arrangi
tu!" (la loro idea di db era... excel!!)
Cmq adesso mi studio questa cosa.
Grazie!!!


Un'ultima domanda...
Dopo che io ho inserito la mia immagine, non posso vederla immediatamente, ma
devo o riaprire la maschera o andare avanti/indietro di un record.
Ho letto altri posts e ho visto che si parlava di Me.Refresh/Repaint/Requery
Posso usare uno di questi comandi? Ma su quale proprietą del controllo?
Grazie


 Erika
Prova questo:
Ti ho fatto una modifica per evitare di Ricaricare l'immagine nel caso fosse
uguale alla precedente, sarebbe una perdita di tempo e risorse inutile.....!
Private Sub Form_Current()
     On Error Resume Next
     Static NomeImmagine as string
     Me.Pathimmagine = mc_strPath & Me.CodiceProdotto.Value & ".JPG"
     if Len(dir(Me.Pathimmagine)) > 0 then
              If  NomeImmagine<>Me.Pathimmagine  then   'il file esiste
                      Me.Immagine.Picture = Me.Pathimmagine
                      Me.Repaint
             End if
     Else
              Me.Immagine.Picture=vbnullstring
              Me.Repaint
     End if
     NomeImmagine=Me.Pathimmagine
End Sub
Non usare il Requery andresti in Loop....!
Ciao


Non usare il Requery andresti in Loop....!
 
Me n'ero accorta ^_^;;;
Grazie ancora
