Forum - Questions sur Access - Afficher photo dans un État
le 01/03/2022 : 20:30
par Deseyes
visiteur
Bonjour.
En effet ma question ne partait pas nouvelle, mais je n'ai pas eu la réponse satisfaisante. J'ai une base de données de gestion Scolaire. ou j'ai mis les photos dans dossier hors de la base. Pour éditer les bulletins , j'ai besoin d'afficher les photos . La table élèves qui est la source de l'état comporte bien évidemment le champ photo qui ne contient que les liens vers photos. Alors je suis passé par tous les moyens même y compris votre solution qui date de longtemps. Moi j'utilise Access 2016. Aidez moi. Ce sont mes premiers pas en Access et je vous assure que je galère depuis sur ce truc.
J'avais mis un champ indépendant dans détail que j'ai nommé txtPhoto. Et sur détail, dans événement puis au formatage j'ai saisi ce code:
Option compare Database
Option explicit
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
On Error Resume Next
Me.Controls("txtPhoto"). Picture= Me.Controls("Photo"). Value
End Sub
Malheureusement je n'ai pas de résultat.
--------
le 02/03/2022 : 15:54
par 3Stone
Administrateur
Bonjour,
Citation : « Deseyes »
Alors je suis passé par tous les moyens même y compris votre solution qui date de longtemps.
Heu... laquelle ?
Pas de champ indépendant, il est inutile.
Un simple contrôle "image" (vérifier l'indication de l'info-bulle lors de la sélection). Lors de la création on te demande de sélectionner cette image... sélectionne un image "vide" par exemple ou n'importe quoi à la bonne taille.
Ensuite, comme dit, dans le Detail_Format, quelque chose comme :
Dim sPhoto AS String sPhoto = Me![CheminPhoto] If Dir(sPhoto) <> "" Then Me![Photo].Picture = sPhoto Else Me![Photo].Picture = "rien" End If
Ceci dit, personnellement, je préfère ne mettre que le numéro de la photo à la place du chemin complet.
- Toutes les photos dans un répertoire "Photos"
- Ce répertoire on le place dans le même répertoire que la base
Ensuite, lorsque l'on souhaite accéder à une photo, il suffit de récupérer le chemin d'accès au répertoire photos par :
Dim sPathPhoto as String sPathPhoto = Application.CurrentProject.path & "\Photos\"
à cela, il suffit alors d'ajouter le nom de la photo (donc le numéro).
Cela fonctionnera toujours, même lorsque l'on déplace la base (avec son répertoire "photos")
Dis moi si tu y arrive, sinon revient !
Cordialement,
Pierre (3Stone)
--------
le 25/04/2022 : 10:48
par Deseyes
visiteur
Bonjour Pierre. J'espère tu vas bien. Merci pour ta réponse aussi. Claire. Je m'excuse pour le temps écoulé. Je souffrais de la malaria. Ce-ci étant je voudrais dire que n'y arrive pas toujours. Voici ce que j'ai fait et qui ne marche pas.
Chemin de la base de données :
C:UsersAdministrateurDesktop
Chemin du dossier contenant les photos :
C:UsersAdministrateurDesktopGpe_Scol_PaouflaPhotoBase
Exemple de chemin de la photo dans la table élève:
C:UsersAdministrateurDesktopGpe_Scol_PaouflaPhotoBase1.png
Nom du champ de la photo dans la table Élève:
Photo
Enfin, les photos sont numérotées 1;2;3 etc… dans le répertoire
Voici le code que j'ai saisie
Option Compare Database
Option Explicit
Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
Dim sPhoto As String
Dim sPathPhoto As String
sPathPhoto = Application.CurrentProject.path & "Gpe_Scol_PaouflaPhotoBase"
sPhoto = Me![Photo]
If Dir (sPhoto) <>"" Then
Me![Photo].Picture = sPhoto
Else
Me![Photo].Picture = ""
End If
End Sub
Mais quand j'exécute il surligne sPhoto = Me![Photo] avec le message: Microsoft ne retrouve le champ photo auquel il est fait référence dans votre expression
Ou bien je dois nommer le cadre de l'objet image que j'ai inséré ?
--------
le 26/04/2022 : 15:41
par 3Stone
Administrateur
Bonjour,
Citation :
sPathPhoto = Application.CurrentProject.path & "Gpe_Scol_PaouflaPhotoBase"
Heu... non, Application.CurrentProject.Path renvoie l'emplacement de la base Access (ton application) et je suppose que tu ne l'as pas possée sur le bureau... ?
Donc, sPathPhoto doit contenir le chemin vers le répertoire qui contient les photos.
Ensuite, dans ton état, le controle qui doit afficher porte un nom, disons cadrePhoto.
Dans ta table, tu as un champ (disons LaPhoto) qui contient le nom de la photo de la personne concernée.
Et donc, sPathPhoto & "" & LaPhoto doit contenir la chemin et la photo.
Dans l'état :
cadrePhoto.picture = sPathPhoto & "" & LaPhoto
doit alors afficher cette photo.
Pour voir ce que contiennent les différente variable, tu peux écrire plusieurs "Debug.print la_variable" pour visionner ce contenu (par Ctrl + G)
Si tu n'y arrive pas, tu peux m'envoyer ta base avec juste quelques données exemple via ce formulaire.
Cordialement,
Pierre (3stone)
--------
le 09/05/2022 : 20:08
par 3Stone
Administrateur
Bonjour,
Désolé, mais les fichiers (rar) étaient à nouveau vide
J'ai alors testé moi-même de m'envoyer un fichier et... il était vide également.
Je ne sais pas où est le problème, mais j'ai créé un nouveau formulaire dédié à cela, testé plusieurs fois et tout va bien maintenant
Utilise donc ce formulaire-ci.
Désolé pour le contretemps...
Pierre (3Stone)
--------
le 10/05/2022 : 22:13
par desyes
visiteur
Bonsoir Pierre. Puisse Dieu te récompenser pour pour ta disponibilité à aider ton prochain.
Il faut dire que le formulaire ne fonctionne pas après maintes reprises. Quand je mets un fichier rar il dit que c'est incompatible. Quand un en ZIP il dit compatible mais ne l'envoie pas. Alors, je ne sais que faire.
Ne blessés bro
--------
le 11/05/2022 : 01:09
par 3Stone
Administrateur
Bonsoir,
Je viens de retester... et cela fonctionne parfaitement.
Mais, la taille du fichier est limitée à 3 MB !
Et n'utilise pas de nom à rallonge pour le fichier compacter.
Un simple "MaBase.zip" est suffisant
Et le bouton de sélection ne peut pas être de couleur rouge après la sélection du fichier, si c'est le cas... trop gros, mauvais nom...
Cordialement,
Pierre (3Stone)
Rectifier message Clôturer sujet Remonter