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

Signaler
Messages postés
91
Date d'inscription
samedi 2 avril 2005
Statut
Membre
Dernière intervention
7 août 2006
-
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
-
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

Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

Ton image est stockée dans la base ?

++
Moustachu
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
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