Newsgroup: it.comp.appl.access
Titolo: Caricare una foto solo se esiste....

Scusate ancora l'intrusione ma...ritornando al problema del post 
precedente, brillantemente risolto grazie all'aiuto di Riccardo e 
Alessandro, mi trovo di fronte ad un altro piccolo bug...
la mia maschera "Album" carica le foto dei prodotti grazie ad un 
controllo in una query che chiamo
foto:"D:\Immagini\" & Format([Riff]) & ".jpg"
ed un "img" immagine collegata al controllo tramite la routine evento 
"su corrente" della maschera che ordina:
Private Sub Form_Current()
     Me.Img.Picture = Me.Foto
End Sub
Ora il problema nasce se di un determinato prodotto non ho lo foto nella 
cartella immagini....mi da un errore di debug....molto fastidioso...
come risolvere?? una soluzione potrebbe essere ad esempio che se non 
esiste la foto A5678, mi carichi un'immagine prestabilita, tipo "no 
Foto"...ma non so come fare.
Ovviamente sono ben accette altre soluzioni...
Grazie!!


Potresti cominciare a mettere un
On Error GoTo errore:
 
e scrivi
errore:
   MsgBox Err.Number, Err.Description
 
così vedi il numero di errore.
Poi puoi sostituire con:
On Error Resume Next
e, dopo l'istruzione che ti dà errore:
If Err.Number = <quello che avrai trovato> Then
   MsgBox "Foto non presente"
   Exit Sub
End If
o cose del genere.

 Grazie!!
 
 
-- 
 
ac (x=y-1)

 o cose del genere.
 
Non funziona....cioè...se inserisco le righe che scrivi
 
On Error GoTo errore:
errore:
	MsgBox Err.Number, Err.Description
 
nella sezione "su corrente" mi da un "Errore di Run-Time '13' - Tipo non 
corrispondente" anche sui record dei quali c'è la foto....non funziona 
proprio più insomma....
forse devo scrivere queste righe in un'altra sezione della routine?

 wrote:

Ciao!
 
Una cosa di questo genere potrebbe andare bene?
 
Private Sub Form_Current()
    if (dir(me.foto)<>"")then
        Me.Img.Picture = Me.Foto
    else
        Me.Img.Picture = x:\path\MancaFoto.jpg
    end if
End Sub
 
HTH
Popi


 
In questo caso nasce il problema che anziche un avviso di debug 
generico, mi da un msgbox con scritto:
Errore di run-time '2220' Impossibile aprire il file D:......

 Popi
 
Grazie!! Ho risolto cosě:
 
Siccome, non so perchč, ma mi dava errori in tutti i modi, anche che 
questa soluzione...ho creato un campo nella query di partenza della 
maschera in questo modo:
Fotor:"C\foto mancante.jpg"
 
poi, nella routine evento della maschera ho scritto:
 
  Private Sub Form_Current()
       if (dir(me.foto)<>"")then
           Me.Img.Picture = Me.Foto
       else
           Me.Img.Picture = me.Fotor
       end if
  End Sub
 
 
Cosě funziona!
Grazie a tutti!

 Grazie a tutti!
 
Si ma è una CAVOLATA bestiale...!
 
@Alex

 @Alex
si..hai ragione...ma...potresti allora spiegarmi perch� non funzionano i 
suddetti metodi? premetto e ripeto di non essere una "cima"...e si 
vede....quindi....se possibile...una spiegazione davvero semplice e 
maccheronica... Grazie comunque!


Il riferimento alla cavolata era ed è rivolto alla necessità di usare
INUTILMENTE un controllo TEXTBOX ovviamente, poi tu puoi fare come
credi.
 
I motivi per i quali non funzionava possono essere molti, e
condizionati da errori che magari non hai esposto...
Ad esempio perchè hai usato FORMAT in questa Format([Riff])...?
Ovviamente non serve, ma giusto per farti capire che se banalmente,
per inesperienza commetti errori di questo tipo, potresti
averne commessi altri che celano il vero motivo del malfunzionamento.
 
Io farei così:
 
  Private Sub Form_Current()
       Me.Img.Picture=vbNullstring
       if EsisteFile(me.foto) then
             Me.Img.Picture = Me.Foto
       Else
              Me.Img.Picture = mFakeImage
       End If
  End Sub
 
questo in un Modulo:
 
Public Const cFakeImage= "C\foto mancante.jpg"
 
Public Function EsisteFile(ByVal str As String) As Boolean
    On Error Resume Next
    EsisteFile = (GetAttr(str) And vbDirectory) = 0
End Function
 
Per i PIGNOLI delle performances... la funzione usata per la verifica
dell'esistenza del FILE è decisamente più veloce dell'uso di DIR....
ovviamente la considerazione è nel caso si debba CICLARE... ma a
prescindere se è meglio io la uso.
 
@Alex


Grande Alex...e grazie per la cortese e completa risposta!
Purtroppo, credo che tutto questo sia davvero al disopra delle mie 
capacità..intendo....voglio fare qualcosa che riesco anche a capire e 
controllare...e le funzioni che tu esponi sono per me "arabo"...
Terrò comunque in serbo questo post, per quando sarò (spero presto) più 
capace.
A presto, Raf