Leçon 11 |
|||
Pièces jointes et Objets OLE
|
Dans cette leçon, nous allons voir deux types de champs "apparentés" aux liens hypertextes : ce sont les Pièces Jointes (qui sont une nouveauté d'Access 2007), et Objets OLE, qui, eux, existent depuis longtemps. Il s'agit de champs qui permettent d'intégrer ou de lier un ou plusieurs fichiers externes, tels que des tableaux Excel, des documents Word, des images, des vidéos, etc. |
Sommaire
|
Cette leçon va parler de pièces jointes et de fichiers à inclure.
Du coup, nous allons avoir besoin de quelques fichiers de test :
Ces fichiers sont simplement
(mais qui n'est pas un virus, pas d'inquiétude : c'est juste un petit programme gratuit qui permet de scinder de gros fichiers en plus petits, mais bon, ce n'est pas le sujet, c'est juste pour voir si on peut inclure des fichiers-programmes.exe dans notre base de données)
Je vous propose de cliquer ici pour télécharger fichierslecon011.zip, et décompresser les fichiers dans un dossier de votre PC, par exemple dans Mes Documents.
Ouvrez votre base de données, ouvrez T_Client en mode création, et ajoutez un champ DocumentAnnexe, sous Prenom, en type de données Pièces jointes :
Vous voyez maintenant sa pièce jointe
qui contient 1 document :
Pour visualiser le contenu, il vous suffit de cliquer deux fois sur le petit trombone, et deux fois sur Commande de pizza.docx, comme ceci :
En fait, les pièces jointes sont exactement le contraire des liens hypertexte : un lien hypertexte est une simple renvoi à un fichier externe, tandis qu'un champ Pièces jointes intègre le fichier directement dans la base de données.
Du coup, évidemment, ça peut très rapidement grossir la base de données inconsidérément.
J'ai regardé la taille de la base de données avant et après l'insertion de la pièce jointe. Pour des raisons que je ne connais pas, la taille de la base de données + la taille de la pièce jointe intégrée ne donne pas la bonne addition : la base augmente plus que nécessaire (ne me demandez pas pourquoi) :
Vous constatez qu'en mode saisie de données, le champ n'est pas titré DocumentAnnexe, mais est représenté par un petit trombonne. Vous aurez sans doute découvert qu'il suffit de changer sa légende pour remédier à ça :
Vous pouvez ajouter autant de pièces jointes que vous voulez (à mon avis, il y a une limite, mais je ne l'ai pas trouvée), mais votre base de données ne peut jamais dépasser 2Go.
Si vous désirez connaître les différentes limitations d'Access, visitez cette page de Microsoft.
Constatez qu'il n'y a pas d'icône particulière pour montrer qu'il s'agit d'un document Word, une image JPEG ou une vidéo WMV (ça aurait été pourtant bien pratique).
Maintenant, si vous essayez d'inclure dans votre pièce jointe le programme Xtremsplit.exe, vous serez gratifié d'un message d'erreur :
D'un côté, je comprends Microsoft qui estime que tout fichier se finissant par .exe peut contenir un virus, mais, d'un autre côté, j'ai aussi envie de leur dire : "De quoi j'me mêle ?"
Je traite des objets OLE dans ce même chapitre car ils ressemblent aux pièces jointes. Les champs de type OLE existent depuis fort longtemps, alors que les pièces jointes apparaissent avec Access 2007.
OLE signifie "Object Linking and Embedding", soit "Liaison et incorporation d'objets" - Objets dans le sens "Fichiers".
En bref :
Du coup, on se demande à quoi servent les OLE puisqu'on arrive apparemment à faire la même chose, en mieux, avec les pièces jointes et les liens hypertextes !
Eh bien, les objets de type OLE permettent la visualisation du fichier directement dans Access, sans avoir besoin de cliquer dessus pour le voir. Et ça, c'est quand même drôlement sympa !
Essayons : créez un nouveau champ InfoVisuelle, en dessous de Prenom :
Lancez la table en mode saisie de données
Cliquez avec le bouton droit de votre souris sur le champ InfoVisuelle d'Edith Piaf, choisissez Insérer un objet :
O déception : tout ce que vous voyez, c'est ceci :
Il n'y a même pas le nom du fichier (Tableau simple.xlsx), et en plus, il faut cliquer deux fois dessus pour le visualiser ! Alors que je vous ai dit plus haut qu'on pouvait voir directement l'aperçu sans cliquer !
Oui, mais pas dans les tables : on pourra seulement voir cet aperçu dans les formulaires et dans les états.
Nous n'allons pas étudier les formulaires maintenant, ce n'est pas le sujet de cette leçon, mais je vais quand même vous montrer quelque chose d'étonnant !
Faites d'abord l'exercice suivant : Dans le champ InfoVisuelle de Steven Spielberg, insérez l'image Boire ou voler.jpg (qui se trouve aussi parmi les fichiers qui sont dans le .zip du début de leçon).
Vous devriez obtenir le résultat suivant :
Constatez qu'il attribue (étrangement) le terme Package au lieu de, par exemple, image JPEG).
Résumons la situation visuellement :
Vous êtes maintenant dans un formulaire basé sur T_Client, et vous êtes sur le premier client (Edith Piaf).
Observez le champ InfoVisuelle : nous voyons, effectivement, comme je vous l'avais promis, le contenu du fichier Excel.
MAIS, dans Annexes, nous voyons seulement l'icône du premier fichier inclus (Commande de pizza.docx).
Pour voir les autres fichiers inclus, cliquez une fois sur l'icône Word : ça fait apparaître une mini-barre d'outils :
Cliquez sur la flèche verte (ne me demandez pas pourquoi l'infobulle affiche "avant", et pas "après" )
Et là, vous ne voyez pas une icône, mais carrément l'image Contourne Barrière.jpg
(Pourquoi ? ... je ne sais pas)
Si vous demandiez à voir le 3ème fichier (la vidéo Effet de Serre.wmv), vous verriez simplement l'icône également.
Comme vous le constatez, ce n'est pas facile du tout de s'y retrouver !
Mais nous ne sommes pas au bout de nos surprises !
En bas de votre formulaire, vous avez des petites flèches qui vous permettent de changer d'enregistrement.
Cliquez sur la flèche droite pour aller sur le 2ème client (Steven Spielberg).
Et là, vous avez, cette fois, dans le champ OLE InfoVisuelle, une icône qui représente l'image, mais pas l'image elle-même :
On se croirait dans un sketch : Prenez une profonde inspiration !
Vous avez donc les images JPG dans les champs OLE qui s'affichent comme des icônes alors qu'on aurait préféré qu'elles s'affichent comme des images, alors que ces mêmes images s'affichent comme des images dans les champs pièces jointes alors que des icônes nous auraient suffi !
D'autre part, les fichiers Word ou Excel s'affichent, eux, comme des fichiers Word ou Excel en véritable aperçu dans les champs OLE, mais ils s'affichent sous forme d'icônes dans les champs Pièces jointes.
Voilà, c'est fini, vous pouvez respirer.
Ce problème d'affichage en icône des images est vraiment dommage, puisque ce serait tellement sympathique d'avoir, directement dans Access la photo des collaborateurs, des produits, des maisons à vendre, ...
Ces soucis d'affichage d'image dans des champs OLE sont un problème récurrent dans Access depuis de nombreuses, nombreuses années, sans que personne n'y ait jamais trouvé de solution véritable.
Il est possible que, dans votre cas, vous voyiez correctement les images en véritable aperçu. Tant mieux pour vous, mais restez vigilant, parce que cette situation peut changer à tout moment !
La simple installation d'un nouveau logiciel peut tout à coup vous réimposer les icones à la place des images. Si vous changez de PC, mais que vous ouvrez la même base de données, vous pourrez avoir également de souci d'affichage en icone.
Si vous connaissez une solution durable, simple et fiable, qui fonctionnne avec Access 2010 en français sous Windows 7, je suis preneur !
En conclusion, je vous propose d'utiliser plutôt le type de champ Pièces jointes, et pas l'objet OLE, avec une seule pièce jointe qui contient une image, si vous voulez une image qui apparaît directement dans votre formulaire
Bien. Fermez ce formulaire (Access l'a nommé temporairement T_Client, comme votre table) sans l'enregistrer.
Les pièces jointes sont automatiquement intégrées dans la base de données. C'est à dire que si j'ai un fichier Test d'ébriété.docx sur mon PC et que je l'intègre en tant que pièce jointe dans Access, il s'agira donc une copie du fichier original qui sera intégré.
Par contre, avec les objets OLE, on a la possibilité de lier ou d'intégrer. Faisons le test :
Bien entendu, si vous double-cliquez sur ce document , le XXX que vous avez ajouté apparaîtra, et ce, que vous ayez coché la case Liaison , ou pas.
Ce qui change, c'est que si vous allez dans votre explorateur Windows, et que vous ouvrez le fichier depuis là (ou que vous alliez directement dans Word et que vous faites Fichier/ouvrir), vous constaterez que le fichier d'origine a changé : il contient bien XXX au début du texte.
Si on n'avait pas coché la case liaison, nous aurions seulement modifié la copie locale au sein de la table Access.
Pour vous en persuader, faites ce petit exercice :
Afin d'alléger un peu notre base de données, j'ai retiré la vidéo Effet de serre de la table pour la leçon suivante.
Dans cette leçon, nous avons mis en perspective les champs de type Lien hypertexte avec les champs de type Pièce Jointe et Objet OLE.
Les champs OLE permettent une liaison ou une incorporation, alors que les pièces jointes ne permettent que l'incorporation. Par contre, les pièces jointes permettent plusieurs fichiers pour un seul enregistrement, et pas les champs OLE.
La visualisation dans les formulaires et les états est complexe, et obéit à une logique mal définie.
Dans les tables, on ne peut visualiser les fichiers qu'en les ouvrant véritablement. On peut utiliser des fichiers de toutes sortes (Word, Excel, Vidéo, images, ...) dans les OLE et dans les pièces jointes. Le fait d'intégrer des fichiers alourdit la base de données de manière significative.
L'exercice consiste à créer une nouvelle base de données que vous nommerez ExerciceLecon011.accdb.
Vous y créerez une table T_Voiture, avec les champs suivants :
Vous allez y créer deux voitures :
Cliquez avec le bouton droit de votre souris sur les fichiers à télécharger ci-dessous, et mettez ces fichiers dans le même dossier que votre base de données ExerciceLecon011 :
Une fois ces fichiers téléchargés :
Maintenant, effacez (mettez dans la corbeille) les quatre fichiers que vous avez téléchargé depuis votre explorateur Windows (pas depuis vos champs Resume et Photo !)
Constatez par-vous-même que vous pouvez cliquer deux fois pour ouvrir le résumé de la Ferrari et les 2 images de la Ford, mais qu'un message d'erreur n'apparaît logiquement que lorsque vous essayez d'ouvrir le résumé de la Ford.
Allez dans votre corbeille et restaurez le fichier de résumé de la Ford.
Constatez maintenant que votre lien OLE fonctionne à nouveau.