Forum - Questions sur Access - Afficher photo dans un État


 2 membres
Connectés : ( personne )

  Sujet n° 855
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.

  

Réponse n° 1
--------
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 ?  surprise

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)

  
Réponse n° 2
--------
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é ?

  
Réponse n° 3
--------
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)

  
Réponse n° 4
--------
le 27/04/2022 16:38
par 3Stone
 
Administrateur

Bonjour,

Problème avec ton fichier joint, il est vide...

Pierre (3Stone)

  
Réponse n° 5
--------
le 09/05/2022 20:08
par 3Stone
 
Administrateur

Bonjour,

Désolé, mais les fichiers (rar) étaient à nouveau vide angry

J'ai alors testé moi-même de m'envoyer un fichier et... il était vide également. blushcrying

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 yes

Utilise donc ce formulaire-ci.

Désolé pour le contretemps...

Pierre (3Stone)

  
Réponse n° 6
--------
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

  
Réponse n° 7
--------
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 laugh

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)

  
Réponse n° 8
--------
le 11/05/2022 01:39
par desyes
 
visiteur

T'es un génie.  Mon fichier compressé dépasse 3Mo.. demain je vais réduire encore et te revenir. Bonne nuit a toi

  
Réponse n° 9
--------
le 11/05/2022 19:54
par Deseyes
 
visiteur

Bonsoir Pierre. Décidément, le diable rode autour  j'ai compacté la base a 3Mo .quand j'envoie il me dit que le code anti robot n'est pas valide et il m'en propose autre. J'ai même divisé la base en deux. Pour obtenir moins, c'est toujours même chose.

  
Réponse n° 10
--------
le 11/05/2022 21:48
par 3Stone
 
Administrateur

Salut,

A te lire, je comprends que tu as des problèmes avec Access laugh

Écoute, vas sur https://www.cjoint.com/ et là tu charge ton ZIP.

  • Type de diffusion - tu choisi "Privée"
  • Durée - tu mets 4 ou 21 jours
  • ... ton adresse émail
  • et tu clique sur "Créer le lien Cjoint"

Tu obtiendras un lien que tu viens coller ici dans mon formulaire (sans fichier joint)

Si là tu n'y arrive pas... demande à ton dieu pourquoi il ne t'aime pas laughwinkangel

Pierre (3Stone)

  
sujet actif   sujet clos   Important!   Nouveau  
Rectifier message   Clôturer sujet   Remonter sujet