Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mise à jour d'un champ OLE dans un formulaire

3 réponses
Avatar
butch
Bonjour,

Mise en situation :
Un formulaire basé sur une table, contient un champ OLE (de cette table)
dans lequel champ une image s'affiche. Le formulaire contient aussi les
autres champs de cette table.
Sur le même formulaire, un bouton de commande exécute une requête Ajout
"paramétrée" permettant de choisir une autre image, par son numéro afin de
changer cette image pour un nouvel enregistrement de la table et de l'ajouter
à cet enregistrement.
Actuellement, cette méthode fonctionne... la nouvelle image est bien ajoutée
dans le champ OLE de la table lorsqu'on clique et choisi le numéro de l'image
soit, en exécutant la requête Ajout.

Problème - Question :
Lorsque dans un nouvel enregistrement du formulaire on demande la
modification de l'image, cette image ne s'affiche pas dans le champ OLE (basé
sur la table) du formulaire. Il faut fermer puis réouvrir le formulaire afin
de voir la nouvelle image dans l'enregistrement correspondant.
Donc, comment faire pour que cette image s'affiche dans le champ OLE du
formulaire au moment où on exécute la requête Ajout sans qu'il ne soit
nécessaire de fermer et réouvrir le formulaire donc, en restant sur
l'enregistrement en cours ?
Est-ce possible ?
--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.

3 réponses

Avatar
Gafish
butch wrote:
Bonjour,


Bonjour,

Mise en situation :
Un formulaire basé sur une table, contient un champ OLE (de cette
table) dans lequel champ une image s'affiche.


Evite les champs OLE, ca alourdit considérablement ta base et ca la fait
enfler très vite.
Tu trouveras des infos et une méthode beaucoup plus efficace ici :
http://officesystem.access.free.fr/images.htm

Arnaud
--
Charte du forum : http://www.mpfa.info/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
butch
Bonjour Arnaud,

OUF ! Ça marche ! ... pour moi qui ne suis pas à l'aise avec VBA ce fut
toute une "aventure". J'ai trouvé la référence que tu m'as indiqué pour la
version Access XP. Grand Merci !
Mais (car il y toujours un "mais"...), j'aimerais améliorer ce
fonctionnement pour ma BD. En voici les explications :

J'ai copié le code obtenu sur le site de référence plus loin dans ce
message. D'après ce que je comprend, ce code permet, entre autre, de
localiser de façon relative l'emplacement des images à visualiser dans le
formulaire. À titre d'exemple, dans la table (tblImage) servant de base au
formulaire, je n'ai inscrit que le nom du fichier image (ex: Gâteaux.bmp) et
les différentes images (enregistrements) s'affichent correctement dans le
formulaire.

Actuellement, les images sont stockées dans le même dossier que celui où se
trouve la BD... je n'aime pas beaucoup cela ! J'aimerais plutôt que les
images soient stockées dans un sous-dossier de la BD qui se nommerait
ImagesStockees.

Mais voilà... si je fais cela actuellement, le formulaire "ne trouve plus"
les images. De plus, la BD elle-même peut être placée éventuellement sur un
lecteur autre que le lecteur actuel et aussi dans un dossier différent. Le
dossier ImageStockees, quant à lui, serait toujours placé SOUS le dossier où
serait la BD. Son nom ne changerait jamais.
Cela est-il possible et comment y arriver ?
Ci-desous, le code du module ModuleImage (c'est le nom que je lui ai donné)
obtenu d'Internet. Est-ce bien dans ce code que la manipulation pour
atteindre mon objectif pourrait se faire ?

Code obtenu d'Internet :
Option Compare Database
Option Explicit

Public Function DisplayImage(ctlImageControl As Control, strImagePath As
Variant) As String
On Error GoTo Err_DisplayImage

Dim strResult As String
Dim strDatabasePath As String
Dim intSlashLocation As Integer

With ctlImageControl
If IsNull(strImagePath) Then
.Visible = False
strResult = "No image name specified."
Else
If InStr(1, strImagePath, "") = 0 Then
' Path is relative
strDatabasePath = CurrentProject.FullName
intSlashLocation = InStrRev(strDatabasePath, "",
Len(strDatabasePath))
strDatabasePath = Left(strDatabasePath, intSlashLocation)
strImagePath = strDatabasePath & strImagePath
End If
.Visible = True
.Picture = strImagePath
strResult = "Image found and displayed."
End If
End With

Exit_DisplayImage:
DisplayImage = strResult
Exit Function

Err_DisplayImage:
Select Case Err.Number
Case 2220 ' Can't find the picture.
ctlImageControl.Visible = False
strResult = "Can't find image in the specified name."
Resume Exit_DisplayImage:
Case Else ' Some other error.
MsgBox Err.Number & " " & Err.Description
strResult = "An error occurred displaying image."
Resume Exit_DisplayImage:
End Select
End Function

--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.
Avatar
butch
Bonjour Arnaud,

OK j'ai trouvé comment placé mes images dans un dossier autre que celui où
est la BD.
S.V.P. ne tiens pas compte du "long" message à ce sujet...
Encore merci.
--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.



butch wrote:
Bonjour,


Bonjour,

Mise en situation :
Un formulaire basé sur une table, contient un champ OLE (de cette
table) dans lequel champ une image s'affiche.


Evite les champs OLE, ca alourdit considérablement ta base et ca la fait
enfler très vite.
Tu trouveras des infos et une méthode beaucoup plus efficace ici :
http://officesystem.access.free.fr/images.htm

Arnaud
--
Charte du forum : http://www.mpfa.info/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr