Famille de systèmes de gestion de bases de données relationnelles Microsoft conçus pour être faciles à utiliser.
Bonjour Patrick mwanza
Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions inhabituelles.
Merci d’avoir publié votre question sur le forum Microsoft Q&A.
Ce problème est survenu parce que Microsoft Access n’enregistre pas automatiquement l’enregistrement en cours lorsque les modifications sont effectuées via un bouton de commande. Lorsque votre code a affecté le chemin de l’image au champ, l’enregistrement a été marqué comme modifié mais est resté non enregistré en mémoire. Étant donné qu’Access n’enregistre automatiquement les données que lors d’un changement d’enregistrement ou de la fermeture du formulaire, le chemin de la photo n’a jamais été réellement écrit dans la table, même si cela semblait fonctionner à l’écran.
En parallèle, le contrôle Image utilisé est non lié, ce qui signifie qu’il n’est associé à aucun enregistrement spécifique. Un contrôle Image non lié continue simplement d’afficher la dernière image qui lui a été affectée jusqu’à ce qu’elle soit modifiée manuellement. Comme l’enregistrement n’était pas enregistré et que l’image n’était pas rechargée lors du changement d’enregistrement, la photo précédente restait affichée et ne suivait pas correctement les données du candidat. Le fait de forcer l’enregistrement de l’enregistrement et de recharger l’image lors du changement d’enregistrement permet de corriger ces deux comportements.
Voici la version propre suggérée, veuillez essayer ceci :
Dim fd As Object
Dim cheminSource As String
Dim dossierDest As String
Dim nomFichier As String
Dim cheminFinal As String
dossierDest = "C:\Users\Public\Pictures\Sample Pictures\"
Set fd = Application.FileDialog(3) ' File picker
With fd
.Title = "Insérer une image"
.Filters.Clear
.Filters.Add "Images", "*.jpg; *.jpeg; *.png; *.bmp"
If .Show <> -1 Then Exit Sub
cheminSource = .SelectedItems(1)
End With
nomFichier = Mid(cheminSource, InStrRev(cheminSource, "\") + 1)
cheminFinal = dossierDest & nomFichier
FileCopy cheminSource, cheminFinal
Me.photo = cheminFinal
If Me.Dirty Then Me.Dirty = False
Veuillez ajouter cet événement Form_Current au module de code du formulaire. L’événement Form_Current s’exécute chaque fois que le formulaire se déplace vers un autre enregistrement ou lorsqu’il est ouvert ou actualisé. Comme les contrôles Image sont non liés, cet événement est l’emplacement correct et pris en charge pour recharger l’image qui correspond à l’enregistrement en cours. Placer ce code ailleurs (clic sur un bouton, module standard, Form_Load) ne permettra pas de mettre à jour l’image de manière fiable lorsque les enregistrements changent.
Private Sub Form_Current()
If Not IsNull(Me.photo) And Me.photo <> "" Then
Me.Image45.Picture = Me.photo
Else
Me.Image45.Picture = ""
End If
End Sub
Veuillez essayer cette suggestion et me dire si cela fonctionne.
Si la réponse vous est utile, cliquez sur « Accepter la réponse » et veuillez l’approuver. Si vous avez des questions supplémentaires concernant cette réponse, cliquez sur « Commenter ».
Remarque : Suivez les étapes de notre documentation pour activer les notifications par e‑mail si vous souhaitez recevoir des notifications liées à ce sujet.