Problème de variable inutilisée

inforlab Messages postés 7 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 29 mai 2007 - 25 mai 2007 à 23:36
inforlab Messages postés 7 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 29 mai 2007 - 29 mai 2007 à 09:39
bonsoir,

j'essaie depuis 24 h d'afficher des images dans 3 picturebox à partir d'une requete de bdd

la requete fonctionne mais s'il manque une image, je reçois une exception de variable inutilisée.
J'essaie d'instancier la variable inutilisée à l'aide d'une condition mais rien n'y fait.

voici la portion de code en question

Dim strim1 
As
String

Dim strim2 
As
String

Dim strim3 
As
String 

Dim conn 
As
New OleDb.OleDbConnection

Dim cmd 
As
New OleDb.OleDbCommand

Tryconn.ConnectionString = 

"Provider=Microsoft.Jet.OLEDB.4.0;Data source=H:\Projects\ImmoInfo\ImmoInfo\Immohb.mdb"conn.Open()

cmd.Connection = conn

cmd.CommandText = 

"select * from img where img_id='" & idsel & 
"'"

Dim myReader 
As OleDbDataReader = cmd.ExecuteReader() 

Do
While myReader.Read()strim1 = myReader.GetString(1)

strim2 = myReader.GetString(2)

strim3 = myReader.GetString(3)

Loop

Catch ex 
As ExceptionMessageBox.Show(ex.Message + 

"NON EXECUTE !!")

If conn 
IsNot
Nothing
Thenconn.Close()

End
If

End
Try

If strim1 = 
""
Thenstrim1 = 

"H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg"

Elseaffichage.faffpb1.Load(strim1)

End
If

If strim2 = 
Nothing
Thenstrim2 = 

"H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg"

Elseaffichage.faffpb2.Load(strim2)

End
If

If strim3 = 
""
Thenstrim3 = 

"H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg"

Elseaffichage.faffpb3.Load(strim3)

End
Ifaffichage.Show()


si il manque une image, j'aimerais en afficher une par defaut (logo_titre.jpg)
pouvez-vous eclairer mes lanternes à ce sujet

Merci

Olivier

10 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
26 mai 2007 à 00:20
Peut etre que avec un code du style cela fonctera mieux.
L'image est stocké en base ou sur le disque dur/

Si c'est le dernier cas il faut regarde avec les system.io.file
il y a une methode d'existence des fichiers

Bon courage. (code non testé c'est pour donner une idée)

Do
While
myReader.Read()
const imageParDefaut as string = "H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg"

if myReader.item("IMAGE1").equals(dbnull.value) then

affichage.faffpb1.Load(
imageParDefaut
)


else



affichage.faffpb1.Load(



myReader.item("IMAGE1")



)




end if



if myReader.item("IMAGE2").equals(dbnull.value) then




affichage.faffpb2.Load(



imageParDefaut



)







else



affichage.faffpb2.Load(



myReader.item("IMAGE2")



)




end if
if myReader.item("IMAGE2").equals(dbnull.value) then
affichage.faffpb2.Load(
imageParDefaut
)

else

affichage.faffpb2.Load(strim2)

end if

...
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 mai 2007 à 01:13
Salut,
sûr qu' avec
If strim1 = ""Then
strim1 = "H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg"
et un point c' est tout, il ne va rien t' afficher si vraiment Strim=""
car affichage.faffpb1.Load(strim1) c' est dans le cas contraire.


ce qu' il faut faire :
If strim1 = ""Then _
strim1 = "H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg"
affichage.faffpb1.Load(strim1)


If strim2 = NothingThen _
strim2 = "H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg"


affichage.faffpb2.Load(strim2)


If strim3 = ""Then _
strim3 = "H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg"


affichage.faffpb3.Load(strim3)


affichage.Show()






 













 
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
26 mai 2007 à 11:52
Bonjour,
Le IIf n'existe pas sous VB.Net ?
S'il existe, voilà tout, il me semble  : 

 affichage.faffpb1.Load(IIf(strim1 = "","H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg",strim1))
 affichage.faffpb2.Load(IIf(strim2 = "","H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg", strim2))
 affichage.faffpb3.Load(IIf(strim3 = "","H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg",strim3))
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
26 mai 2007 à 12:10
Je viens de faire un tour sur google.
Le IIf existe bien sous VB.Net et ce que j'ai écrit devrait donc fonctionner sans problème
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
inforlab Messages postés 7 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 29 mai 2007
27 mai 2007 à 13:55
bonjour,

je viens de faire les essais des differentes réponses mais le problème persiste.

Lorsqu'une l'image 2 n'est pas insérée,  j'ai une exception FileNotFound.
J'ai vérifié le chemin des images, il est correct

J'ai également effectué une serie de test avant d'insérer dans la base qui consistent à donner le chemin d'une image par défaut si l'image n'est pas sélectionnée.

Je ne comprend pas ce qu'il se passe.

Strim1,2,3 sont soulignés et indique qu'ils sont utilisés avant qu'une valeur leurs ont été assignée.

Voila tout ce que je peux dire.....

Merci

Olivier
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
27 mai 2007 à 14:25
fait donc un msgbox de strim1, strim2 et strim3, pour voir ce qu'ils contiennent ...
on y verra alors clair, peut-être ... et ce, juste après ces lignes de ton code :


strim1 = myReader.GetString(1)


strim2 = myReader.GetString(2)


strim3 = myReader.GetString(3)


celui que je t'ai donné fonctionne si strim1, strim2 et strim3 contiennent ""
0
inforlab Messages postés 7 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 29 mai 2007
27 mai 2007 à 15:31
re,

je reçois    OpenFileDialog    dans le messagebox pour l'image manquante
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
27 mai 2007 à 15:44
Tu reçois "OpenFileDialog" ?
Euh....
Oublie donc tout le reste et commence par étudier la façon d'utiliser un CommonDialog pour, en cliquant sur un fichier, obtenir le chemin de ce fichier... car c'est à ce niveau que le bât blesse... et pas à celui de l'image à choisir par défaut en cas de non choix d'une image.
Exercice indispensable, donc :
Apprends à te servir d'un commondialog pour, en cliquant sur un fichier de ton choix, en extraire le chemin dans une variable. Car c'est à ce niveau (non encore atteint) que tu as un problème !...Tu trouveras sur ce forum de nombreux exemples d'utilisation d'un contrôle CommonDialog.
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
28 mai 2007 à 09:36
Regarde l'in de tes tests, pris au hasard :

If strim1 = ""Then

strim1 =
"H:\Projects\ImmoInfo\ImmoInfo\Resources\logo_titre.jpg"
Else
affichage.faffpb1.Load(strim1)
EndIf

tu vois bien que tu utilises le fichier par défaut uniquement si strim1 = ""
"OpenFileDialog" n'est certes pas "", n'est-ce-pas ? ... et ce n'est pas non plus un chemin de fichier ...
Tu as donc, on ne peut plus natuerellement l'exception FileNotFound qui te surprend...

Vu ?
0
inforlab Messages postés 7 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 29 mai 2007
29 mai 2007 à 09:39
Bonjour,

Merci tout d'abord pour vos réponses.

Ne vaut il mieux pas afficher l'image par défaut au chargement du formulaire ?

Olivier
0