Soit un Etat "E_rpt Images" qui m'affiche des planches de photos sans filtres qui fonctionne s'il est appelé en mode standalone (auteur Hervé Inisan)
Bon, maintenant je voudrais l'afficher en provenance d'un formulaire sur la base d'une sélection de photos.
Je voudrais pouvoir générer un planche de photos ne comprenant que les photos se trouvant dans la table de jonction Objet/Photo (sous formulaire du milieu), avec pour valeur de l'Objet est celle sélectionné et dont le champ pivot correspondant à la clef HouseHoldID est renseigné et égal à 1.
=> toutes les photos correspondant à l'objet numéro 1
Pour cela j'ai créé un bouton PlancheP avec pour code source
Click sur PlancheP => ouverture de l'Etat "E_rpt Images" avec pour requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Private Sub PlancheP_Click() Dim Cond As String Dim MDBG As Boolean Dim ObjId As Integer MDBG = Me![MODEDBGm] ObjId = Me.ValHIDm 'requete testée dans R_Jonct_InvPhoto_PlancheP 'SELECT T_Fic_Photo.[Id Image] 'FROM T_Fic_Photo where T_Fic_Photo.[Id Image] In '(select T_Inventaire_Photo.[Id Image] from T_Inventaire_Photo 'WHERE (T_Inventaire_Photo.HouseholdInvID=1)); Cond = "(" Cond = Cond & "SELECT T_Fic_Photo.[Id Image] " Cond = Cond & "FROM T_Fic_Photo where T_Fic_Photo.[Id Image] In " Cond = Cond & "(select T_Inventaire_Photo.[Id Image] from T_Inventaire_Photo " Cond = Cond & " WHERE (T_Inventaire_Photo.HouseholdInvID = " & ObjId & "))" Cond = Cond & ")" txtmsg = "" & Chr(13) & Chr(10) & "Mode Debug : " & CStr(MDBG) txtmsg = txtmsg & Chr(13) & Chr(10) & "Me.ValHIDm : " & CStr(Me.ValHIDm) txtmsg = txtmsg & ", ObjId : " & CStr(ObjId) & Chr(13) & Chr(10) txtmsg = txtmsg & Chr(13) & Chr(10) & "Cond : " txtmsg = txtmsg & Chr(13) & Chr(10) & Cond If MDBG Then MsgBox (txtmsg) DoCmd.OpenReport "E_rpt Images", acViewReport, Cond End Sub
Je suis parvenue à mettre le filtre. J'ai bien mes trois occurrences voulues.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 --------------------------- Microsoft Access --------------------------- Mode Debug : Vrai Me.ValHIDm : 1, ObjId : 1 Cond : (SELECT T_Fic_Photo.[Id Image] FROM T_Fic_Photo where T_Fic_Photo.[Id Image] In (select T_Inventaire_Photo.[Id Image] from T_Inventaire_Photo WHERE (T_Inventaire_Photo.HouseholdInvID = 1))) --------------------------- OK ---------------------------
Le soucis c'est que chaque ligne est affiché sans photo (juste le cadre).
Alors j'ai essayé de biaisé, mais il me mettra simultanément la même photo dans chaque ligne.
***
voici ma tentative :
Pour l'état "E_rpt Images" les champs qui m'intéressent sont Concat et imgApercu
Cet état comporte deux sources : l'un au formatage, l'autre sur click
Extrait du source du module commun ModFichiers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 'Sources Report_E_rpt Images Option Compare Database Option Explicit Private Sub Détail_Format( _ Cancel As Integer, _ FormatCount As Integer) Dim strChemin As String On Error Resume Next ' Appel de fonction du module commun ModFichiers strChemin = AddBackslash(Me.Dossier) & Me.Nom_Fichier Me.imgApercu.Picture = strChemin End Sub ' Procédure ajoutée par mes soins Private Sub Concat_Click() Dim strChemin As String On Error Resume Next ' Appel de fonction du module commun ModFichiers strChemin = AddBackslash(Me.Dossier) strChemin = strChemin & Me.Nom_Fichier Me.Concat = strChemin Me.imgApercu.Picture = strChemin End Sub
Mon soucis est que le click sur Concat renseigne bien le chemin et fichier de l'image , mais dans l'aperçu il écrase l'aperçu de toutes les occurrences.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Option Compare Database Option Explicit ' --- ' Hervé Inisan ' --- ' --- ' AJOUT D'UN \ EN FIN DE CHEMIN ' --- ' Entrée : strFolder <- Chemin à retraiter. ' Sortie : Chemin avec \ ajouté à la fin si nécessaire. ' Function AddBackslash( _ ByVal strFolder As String) As String strFolder = Trim(strFolder) If Right(strFolder, 1) <> "\" Then strFolder = strFolder & "\" AddBackslash = strFolder End Function
Il faut donc que je click l'un après l'autre pour visualiser les photos, ce qui ne présente pas d''intérêt.
voir les deux ecrans exemples cidessous
Que puis je faire pour que mes trois occurences avec affice bien la photo correspondant à sa ligne, et non le Concat séléctionné parmis ces trois lignes ?
En vous remerciant par avance de vos lumières
Cordialement,
ArchiSI
Partager