Upload
anonymous-wpl47bwu4
View
218
Download
0
Embed Size (px)
Citation preview
7/25/2019 CoursAccess-id2901
1/12
Access 2007 par l'exemple : Intgration
d'images dans les Formulaires Continus
par Morgan BILLY
Date de publication : 15 janvier 2006
Dernire mise jour : 15 mai 2012
Dure : 30 minutes
Vous pouvez commenter et donner une note cet article :
Dans le cadre de la dcouverte des nouvelles fonctionnalits d'Access12, nous allons parler
dans cet article d'une nouveaut trs attendue le rattachement d'un champ d'une table avec
un cadre image.
http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
2/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 2 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.http://dolphy35.developpez.com/article/access2007/formcontinus/
I - Introduction..............................................................................................................................................................3
II - Principe...................................................................................................................................................................3
II-A - Le Formulaire 1.............................................................................................................................................3
II-B - Le Formulaire 2.............................................................................................................................................3
III - Techniques utilises..............................................................................................................................................4
IV - Structure de la base de donnes.........................................................................................................................4
V - L'interface graphique............................................................................................................................................. 5V-A - Le Formulaire N1........................................................................................................................................ 5
V-B - Le Formulaire N2........................................................................................................................................ 6
VI - Ajout d'un dossier.................................................................................................................................................7
VII - Code VBA............................................................................................................................................................7
VII-A - Dclarations des Variables.........................................................................................................................7
VII-B - Bote de dialogue Ouvrir............................................................................................................................ 8
VII-C - Gestion de l'erreur en cas d'image non valide.........................................................................................10
VII-D - Extraction du nom du Fichier................................................................................................................... 11
VII-E - Copie de l'image slectionne et ajout dans la table...............................................................................11
VII-F - Code Complet...........................................................................................................................................11
VIII - Conclusion........................................................................................................................................................ 12
IX - Remerciements...................................................................................................................................................12
http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
3/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 3 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.http://dolphy35.developpez.com/article/access2007/formcontinus/
I - Introduction
Cette fonctionnalit trs attendue depuis longtemps permet un rattachement d'un cadre image un champ d'une
table. Cette nouveaut va vous permettre entre autre d'afficher une image diffrente dans un cadre d'un formulaire
en mode continu.
Nous allons aussi aborder galement les objets FileDialog.
Ce tutoriel a t rdig principalement pour vous faire dcouvrir des nouvelles fonctionnalits de la version d'Access
2007.
II - Principe
Cette base de donnes servant d'exemple au sein de ce tutoriel a pour objectif de dcouvrir la nouvelle mouture
d'Access version 12.
Principe de fonctionnement : Renseignement des champs de la fiche employs.
Ajout de la photo de l'employ en la slectionnant l'aide de la bote de dialogue Ouvrir.
Copie de l'image slectionne dans un sous rpertoire de la base courante, pour viter de perdre les
donnes lors d'un dplacement de la base, par exemple.
II-A - Le Formulaire 1
Il s'agit d'un formulaire de saisie d'employs (Nom, prnom, salaire, poste et photo). Ce formulaire se prsente sous
forme de fiche.
II-B - Le Formulaire 2
Ce formulaire permet galement de saisir les employs (Nom, prnom, salaire, poste et photo). Toutefois et
contrairement au prcdent, il est en mode continu ce qui signifie qu'il affiche tous les enregistrements les uns endessous des autres.
http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
4/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 4 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.http://dolphy35.developpez.com/article/access2007/formcontinus/
Et oui, vous ne rvez pas, ce sont bien des images dans un formulaire continu!
III - Techniques utilises
Plusieurs solutions techniques sont mises en oeuvre travers cet exemple.
Les photos ne sont pas attaches la base mais lies par le chemin d'accs qui lui, est stock dans un
champ de type texte dans la table source.
Le bouton Insrer Photoaffiche la bote de dialogue Ouvrir du systme d'exploitation en utilisant un objet
FileDialog.
IV - Structure de la base de donnes
Dans un premier temps nous allons crer l'unique table appele tblEmployes:
http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
5/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 5 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.http://dolphy35.developpez.com/article/access2007/formcontinus/
Crez une nouvelle table en mode cration et renseignez les noms de champs ainsi que leur type comme cela est
indiqu sur l'image ci-dessus.
V - L'interface graphique
V-A - Le Formulaire N1
Crez un nouveau formulaire :
Il vous suffit simplement d'ajouter les diffrents contrles depuis la liste des champs. La source du formulaire est la
table tblEmployes. Ne pas oublier le bouton Insrer photo.
Pour insrer le cadre destin contenir l'image, slectionnez bien le bouton image comme
indiquer sur la photo ci-dessous.
http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
6/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 6 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.http://dolphy35.developpez.com/article/access2007/formcontinus/
Bote outils Access 2007.
Maintenant il faut lier les contrles aux champs de la table par la proprit Source (onglet donnes). Effectuez un
clic droit sur les contrles puis slectionnez
Proprits -> Onglet Donnes -> Source -> slectionnez le champs correspondant.
Grande nouveaut d'Access 2007 :
Il est maintenant possible de lier un contrle image un champ de la table.
C'est ce que nous allons effectuer avec le contrle image qui sera li au champ
Photos de la table tblEmployes
Proprits du Formulaire :
Onglet Format : Affichage par dfaut => Formulaire Unique.
Affichage Slecteur => Non
Onglet Donnes : Source => tblEmployes
V-B - Le Formulaire N2
Crez alors le second formulaire :
http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
7/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 7 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.http://dolphy35.developpez.com/article/access2007/formcontinus/
Faites un copier/coller du Formulaire 1 en modifiant ces paramtres.
Proprits du Formulaire :
Onglet Format : Affichage par dfaut => Formulaire Continus.
Affichage Slecteur => Non
Onglet Donnes : Source => tblEmployes
VI - Ajout d'un dossier
Pour un bon fonctionnement de cette application, il vous faut crer un sous-dossier dans le rpertoire courant de la
base que vous nommerez images. C'est ici que seront placs tous les fichiers images.
VII - Code VBA
Cette application ne possde qu'une procdure VBA qui utilise FileDialoget File.
Christophe WARINa dvelopp le sujet dans son tutoriel Les pices jointes par l'exemple: nous n'allons pas
reprendre ces explications mais simplement les complter un peu.
Ce code va permettre d'afficher la bote de dialogue Windows pour slectionner la photo insrer dans le cadre
image. Ce qu'il faut que vous assimiliez, c'est que nous ne stockons pas l'image dans le champ de la table mais le
chemin pour y accder. Avant cela nous allons effectuer une copie de l'image slectionne dans le dossier images.
VII-A - Dclarations des Variables
Pour disposer de cette fonctionnalit vous devez slectionner la rfrence
Microsoft Office xx.x Object Library
http://dolphy35.developpez.com/article/access2007/formcontinus/http://warin.developpez.com/access/piecejointe/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
8/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 8 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.http://dolphy35.developpez.com/article/access2007/formcontinus/
Nous allons utiliser 2 variables dans ce code, strFichierqui stockera le nom de l'image slectionne et oFDobjet
de type FileDialogqui est l'instance de la bote de dialogue ouvrir.
'Dclaration des variables
DimstrFichier AsString
DimoFD AsFileDialog
VII-B - Bote de dialogue Ouvrir
Nous allons paramtrer l'objet FileDialogafin d'obtenir ce type de bote :
http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
9/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 9 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.http://dolphy35.developpez.com/article/access2007/formcontinus/
Il s'agit d'une boite ouvrirelle sera donc obtenue par :
SetoFD = Application.FileDialog(msoFileDialogOpen)
- Ajout des filtres de la bote, il est possible de mettre plusieurs extensions dans un mme filtre en les sparant par " ;".
WithoFD
'Ajoute les filtres pour fichiers images et tous
With.Filters
.Clear
.Add "Fichiers images", "*.jpg;*.jpeg;*.bmp;*.gif", 1
.Add "Tous", "*.*", 2
EndWith
- Le Titre.
.Title ="Insrer une image"
- Rpertoire par dfaut lors de l'ouverture. Dans cet exemple nous allons ouvrir la bote dans Mes documents\Mes
imagesde l'utilisateur connect.
-> La variable d'environnement USERPROFILEretourne le chemin d'accs du rpertoire spcifique de l'utilisateur:
C:\Documents and Settings\Dolphy35
.InitialFileName =Environ("USERPROFILE") &"\Mes documents\Mes images"
- Pour interdire la slection multiple des fichiers, qui gnrerait automatiquement une erreur, il vous faut dfinir la
proprit .AllowMultiSelect False.
.AllowMultiSelect =False
http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
10/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 10 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.http://dolphy35.developpez.com/article/access2007/formcontinus/
- Grande nouveaut d'Access12, le paramtrage de l'affichage des fichiers dans la bote
de dialogue en une seule ligne, dans notre exemple nous allons forcer l'affichage en type
Apperu
.InitialView =msoFileDialogViewPreview
- Vous pouvez galement mettre l'affichage dans la bote en Miniatures
.InitialView =msoFileDialogViewThumbnail
- Personnalisation du bouton Ouvrir.
.ButtonName ="Insrer"
- Affichage de la bote de dialogue.
If.Show Then
VII-C - Gestion de l'erreur en cas d'image non valide
Appel de la Gestion de l'erreurs.
OnErrorGoTofini
Si le fichier charg dans le contrle n'est pas une image l'erreur 2220 est leve ce qui nous permet d'afficher unmessage personnalis.
http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
11/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 11 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.http://dolphy35.developpez.com/article/access2007/formcontinus/
Pour les autres erreurs, nous afficherons simplement le N d'erreur et sa description.
fini:
SelectCaseErr
Case2220
MsgBox"L'importation du fichier ne s'est pas effectu normalement.", _
vbCritical, "Erreur fichier Image"
CaseElse MsgBoxErr.Number &Chr(13) &Err.Description
EndSelect
Affichage dans le contrle du fichier slectionn et renvoie une erreur si ce n'est pas une image.
Me.Image1.Picture =.SelectedItems(1)
Si l'erreur n'est pas leve nous effaons l'image que l'on vient de charger, ceci dans un but purement d'esthtique.
Me.Image1.Picture =""
VII-D - Extraction du nom du Fichier
Extraction du nom du fichier slectionn pour la copie.
strFichier =Mid(.SelectedItems(1), InStrRev(.SelectedItems(1), "\"))
VII-E - Copie de l'image slectionne et ajout dans la table
Copie de l'image slectionne dans le dossier imagesdu rpertoire courant de la base.
FileCopy .SelectedItems(1), CurrentProject.Path &"\images"&strFichier
Chargement du chemin de l'image du sous dossier dans le champ de la table.
Me.Photos =CurrentProject.Path &"\images"&strFichier
Rafraichissement du Formulaire.
Me.Refresh
VII-F - Code Complet
Voici le code complet mettre dans l'vnement sur clic du bouton Insrer.
PrivateSubbtnInserer_Click()
'Dclaration des variables
DimstrFichier AsString
DimoFD AsFileDialog
'Paramtre la fentre Ouvrir
SetoFD = Application.FileDialog(msoFileDialogOpen)
WithoFD
'Ajoute les filtres pour fichiers images et tous
With.Filters
.Clear
.Add "Fichiers images", "*.jpg;*.jpeg;*.bmp;*.gif", 1 .Add "Tous", "*.*", 2
EndWith 'Renseignement du titre
.Title ="Insrer une image"
http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/7/25/2019 CoursAccess-id2901
12/12
Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
- 12 -Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts Cette page est dpose la SACD
'Ouvre l'explorateur dans le fichier 'Mes documents' du User connect.
.InitialFileName =Environ("USERPROFILE") &"\Mes documents\Mes images" 'Interdit la multi slection
.AllowMultiSelect =False
'Permet de choisir le mode d'affichage dans l'explorateur (ici apperu)
.InitialView =msoFileDialogViewPreview 'Permet de personnaliser le bouton.
.ButtonName ="Insrer"
'Affiche la fentre
If.Show Then
OnErrorGoTofini 'gestion erreur pour control importation
'Retourne un erreur si pas fichier image.
Me.Image1.Picture =.SelectedItems(1)
'Vide du cadre image. Me.Image1.Picture =""
'Extraction du nom du fichier copier.
strFichier =Mid(.SelectedItems(1), InStrRev(.SelectedItems(1), "\"))
'Copie du fichier slectionn vers le sous dossier de la base.
FileCopy .SelectedItems(1), CurrentProject.Path &"\images"&strFichier 'Chargement dans control du chemin de l'image (sous dossier base).
Me.Photos =CurrentProject.Path &"\images"&strFichier
'Rafrachit le Formulaire.
Me.Refresh
EndIfEndWith
ExitSub
fini:
SelectCaseErr
Case2220
MsgBox"L'importation du fichier ne c'est pas effectu normalement.", _
vbCritical, "Erreur fichier Image"
CaseElse
MsgBoxErr.Number &Chr(13) &Err.Description
EndSelect
EndSub
VIII - Conclusion
Comme vous avez pu le constater, la gestion des images a t largement amliore dans Access2007 avec la
possibilit de mettre des images dans des formulaires continus.
Bases exemple du tutoriel
IX - Remerciements
Merci Tofalu, FRED-G, et Arkham46Nono40pour son excellent outil.A www.developpez.compour leur hbergement.
http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/fichiers/base_FormContinus.ziphttp://dolphy35.developpez.com/article/access2007/formcontinus/fichiers/base_FormContinus.ziphttp://dolphy35.developpez.com/article/access2007/formcontinus/fichiers/base_FormContinus.ziphttp://www.developpez.com/http://www.developpez.net/forums/u1804/nono40/http://www.developpez.net/forums/u24198/arkham46/http://www.developpez.net/forums/u9264/fred-g/http://www.developpez.net/forums/u46910/tofalu/http://dolphy35.developpez.com/article/access2007/formcontinus/fichiers/base_FormContinus.ziphttp://dolphy35.developpez.com/article/access2007/formcontinus/fichiers/base_FormContinus.ziphttp://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/