Afficher une image à partir d'une base de données

toddy_101 Messages postés 91 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 7 août 2006 - 23 juin 2005 à 11:48
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 24 juin 2005 à 02:10
bonjour, je voudrais savoir comment afficher une image à partir d'une base de donnée. un truc simple si vous permettez.

merci bcp

2 réponses

cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
23 juin 2005 à 12:01
Ton image est stockée dans la base ?

++
Moustachu
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
24 juin 2005 à 02:10
Je vais faire une hypothèse ^^
Supposons que tu veuilles afficher une image à partir du clic sur le nom d'une image dans un ComboBox.

Ce que je ferai, c'est mettre toutes toutes images à un même endroit/dans un même répertoire.
Dans la base de données, je créerai une table avec des enregistrements qui reprennent le Nom de l'image et son chemin
Par ex. :
Table Image.
Champs Nom, Chemin
Enregistrements : Toto c:\Images\Toto.jpg
Titi c:\Images\Titi.jpg
etc ...

On alimente le ComboBox avec cette table.

Mon code est bien entendu loin d'être parfait (et je ne teste rien là, je le fais de tête ^^), mais c'est à peu près comme ça que je fonctionnerai.
Une feuille, un ComboBox et un contrôle Image ou PictureBox

Sub Comb_Click()
'Définition des variables
Dim MaBase as Database
Dim MaTable as Recordset
Dim SQL as String
Dim Temp as String

'Ouverture de la base et alimentation du ComboBox
Set MaBase = OpenDatabase("c:\ ... chemin") 'si tu pars d'une feuille VB
Set MaBase = Currentdb() ' si tu pars d'un formulaire de ta base Accès

'Création de la requête
SQL = "Select * FROM Image WHERE Nom=" & """" & Combo.text & """"
Set MaTable = Mabase.openrecordset(SQL)
MaTable.movefirst
Temp = MaTable.fields("Chemin")

'Ouverture de l'image
PictureBox.Picture = loadPicture(Temp)

'Fermeture
Matable.close
MaBase.close

End sub

Si toutes tes images sont au même endroit et que tu veux pouvoir les déplacer en même temps que ta base, le plus simple c'est de mettre un sous répertoire Images au niveau de la base de données.
Dans ta table, au lieu de mettre le chemin complet, tu n'as plus qu'à mettre le Nom du fichier image ( "Toto.jpg" pour garder mon ex. de tout à l'heure au lieu de "C:\Images\Toto.jpg").
Et dans le code, au lieu de Temp = MaTable.fields("Chemin"), il suffit de mettre
Temp = App.path & "\Sous-répertoire" & MaTable.fields("Chemin")
(en Acces, il faut marquer Application.path en entier si je me souviens bien)
Comme ça, tu peux déplacer le répertoire contenant la base et les images sans avoir besoin de modifier le code.

Si ma supposition est fausse et que ce n'est pas du tout ce que tu voulais faire et bien ... Désolée :p
0
Rejoignez-nous