Mise à jour enregistrement
Panda
-
Panda -
Panda -
Bonjour,
J'ai une BDD Access avec une table et plusieurs formulaires.
L'un d'entre eux est un formulaire de recherche.
Dans ce formulaire de recherche j'ai des zones de texte et des listes déroulantes (liées à des champs de ma table) et un sous formulaire qui affiche les résultats en fonction de mes choix dans les zones de texte et les listes déroulantes.
J'ai ensuite un second formulaire "Fiche" qui affiche la fiche sélectionnée lors d'un double clic sur un enregistrement dans le sous formulaire du formulaire "recherche"
Tous les champs de ma fiche sont correctement remplis, je récupère bien toutes les infos de mon enregistrement. Cependant l'un des champs "Photo" est un nom de fichier pour une photo. À partir de la fonction suivante j'affiche la photo dans un contrôle image de "Fiche":
Function setImagePath()
Dim StrPhotoPath As String
On Error GoTo PictureNotAvailable
StrPhotoPath = "E:\Photos\" & Me.TxtPhoto
Me.ImgPhoto.Picture = StrPhotoPath
Exit Function
PictureNotAvailable:
StrPhotoPath = "C:\...\defaut.JPG"
Me.ImgPhoto.Picture = StrPhotoPath
End Function
C'est là que ça se corse; la fonction fonctionne, cependant, quel que soit le moment où je la déclenche (Form load, Form activate..... du formulaire "Fiche"), Me.TxtPhoto n'est pas encore mis à jour et correspond encore à la dernière fiche consultée. Donc je me retrouve bien avec la fiche voulue mais avec la photo de la fiche d'avant.
J'ai essayé plusieurs solutions sans succès:
1) inclure Me.Requery et Me.Refresh dans la fonction. Je ne maitrise pas ces fonctions mais espérais rafraichir Me.TxtPhoto avant l'affichage de la photo
2) récupérer dans une variable le nom du fichier même si l'affichage n'est pas encore à jour en rajoutant dans la fonction : Num = DLookup("N°", "Table") et Photo = DLookup("Photo", "Table", "N° =" & Num) mais je ne sais pourquoi, ma variable Num est toujours égale à 46!
3) pas eu plus de succès avec Me.CurrentRecord pour faire quelque chose de similaire au cas précédent.
....
La seule solution viable que j'ai finalement trouvée c'est d'inclure la mise à jour de Fiche.TxtPhoto dans la fonction DblClick de mon sous formulaire "Recherche":
Private Sub LstResultats_DblClick(Cancel As Integer)
Forms.Fiche.TxtPhoto = DLookup("[Photo]", "Table", "[N°] = " & Me.LstResultats)
DoCmd.OpenForm "Fiche", acNormal, , "[N°] = " & Me.LstResultats
End Sub
Ça fonctionne. Cependant ça pose un problème, inclure cette fonction à chaque formulaire qui ferait appel au formulaire "Fiche".
Donc le but est de trouver comment faire pour que ça marche grâce à un code dans le formulaire "Fiche" et non dans le formulaire qui le charge. Comment modifier la fonction setImagePath où à quel moment la charger pour que mon Fiche.TxtPhoto soit déjà mis à jour?
J'ai une BDD Access avec une table et plusieurs formulaires.
L'un d'entre eux est un formulaire de recherche.
Dans ce formulaire de recherche j'ai des zones de texte et des listes déroulantes (liées à des champs de ma table) et un sous formulaire qui affiche les résultats en fonction de mes choix dans les zones de texte et les listes déroulantes.
J'ai ensuite un second formulaire "Fiche" qui affiche la fiche sélectionnée lors d'un double clic sur un enregistrement dans le sous formulaire du formulaire "recherche"
Tous les champs de ma fiche sont correctement remplis, je récupère bien toutes les infos de mon enregistrement. Cependant l'un des champs "Photo" est un nom de fichier pour une photo. À partir de la fonction suivante j'affiche la photo dans un contrôle image de "Fiche":
Function setImagePath()
Dim StrPhotoPath As String
On Error GoTo PictureNotAvailable
StrPhotoPath = "E:\Photos\" & Me.TxtPhoto
Me.ImgPhoto.Picture = StrPhotoPath
Exit Function
PictureNotAvailable:
StrPhotoPath = "C:\...\defaut.JPG"
Me.ImgPhoto.Picture = StrPhotoPath
End Function
C'est là que ça se corse; la fonction fonctionne, cependant, quel que soit le moment où je la déclenche (Form load, Form activate..... du formulaire "Fiche"), Me.TxtPhoto n'est pas encore mis à jour et correspond encore à la dernière fiche consultée. Donc je me retrouve bien avec la fiche voulue mais avec la photo de la fiche d'avant.
J'ai essayé plusieurs solutions sans succès:
1) inclure Me.Requery et Me.Refresh dans la fonction. Je ne maitrise pas ces fonctions mais espérais rafraichir Me.TxtPhoto avant l'affichage de la photo
2) récupérer dans une variable le nom du fichier même si l'affichage n'est pas encore à jour en rajoutant dans la fonction : Num = DLookup("N°", "Table") et Photo = DLookup("Photo", "Table", "N° =" & Num) mais je ne sais pourquoi, ma variable Num est toujours égale à 46!
3) pas eu plus de succès avec Me.CurrentRecord pour faire quelque chose de similaire au cas précédent.
....
La seule solution viable que j'ai finalement trouvée c'est d'inclure la mise à jour de Fiche.TxtPhoto dans la fonction DblClick de mon sous formulaire "Recherche":
Private Sub LstResultats_DblClick(Cancel As Integer)
Forms.Fiche.TxtPhoto = DLookup("[Photo]", "Table", "[N°] = " & Me.LstResultats)
DoCmd.OpenForm "Fiche", acNormal, , "[N°] = " & Me.LstResultats
End Sub
Ça fonctionne. Cependant ça pose un problème, inclure cette fonction à chaque formulaire qui ferait appel au formulaire "Fiche".
Donc le but est de trouver comment faire pour que ça marche grâce à un code dans le formulaire "Fiche" et non dans le formulaire qui le charge. Comment modifier la fonction setImagePath où à quel moment la charger pour que mon Fiche.TxtPhoto soit déjà mis à jour?
A voir également:
- Mise à jour enregistrement
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise à jour libre office - Accueil - Bureautique
- Mise a jour kindle - Guide