Bonjour,
La réponse à mon problème est probablement simple pour des spécialistes du VBA mais là je sèche. Je me tourne donc vers vous.
J'ai un formulaire (en mode formulaire unique) qui m'afiche un à un les films de la base de données (avec jaquette, réalisateur, date de sortie, durée du film etc.). Ce formulaire est basé directement sur la table T_Films.
J'ai mis en place un système de recherche multicritère assez complexe basé sur le tutoriel trouvé ici même. Cette recherche me crée une requête que j'ai nommée R_Choix qui me fait la liste des ID des films répondant à la recherche. Pour l'instant, je change le recordsource du formulaire par une requête qui joint la table T_Films avec la requête R_Choix. Le formulaire ne m'affiche donc plus que les films répondant à la recherche. Nickel !
Par contre je ne peux pas modifier les champs du formulaire Existe-t-il un moyen de filtrer mon formulaire avec ma requête R_Choix (avec Me.Filter par exemple) tout en pouvant continuer à modifier mes enregistrements directement ?
Merci d'avance
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46 Private Sub RefreshQuery() Dim Sel As String Dim Wh As String Dim GrpBy As String Dim Hav As String Dim SQL As String Dim NewQuery As QueryDef CurrentDb.QueryDefs.Delete "R_Choix" Sel = "SELECT T_Films.ID_Film FROM R_Acteurs INNER JOIN T_Films ON R_Acteurs.ID_Film = T_Films.ID_Film " Wh = "WHERE (T_Films.ID_Film <>0)" GrpBy = " GROUP BY T_Films.ID_Film" Hav = " Having ((T_Films.ID_Film <>0) " If Me.Chk_Titre Then GrpBy = GrpBy & ", Titre" Hav = Hav & " And (Titre like '*" & Me.Txt_Titre & "*')" End If If Me.Chk_Genre Then GrpBy = GrpBy & ", IDGenre1, IDGenre2, IDGenre3" Hav = Hav & " And (IDGenre1 = " & Me.Md_Genre.Value & " OR IDGenre2 = " & Me.Md_Genre & " OR IDGenre3 = " & Me.Md_Genre & ")" End If If Me.Chk_Realisateur Then Wh = Wh & " And (Realisateur like '*" & Me.Txt_Realisateur & "*')" End If If Me.Chk_Acteur Then Wh = Wh & " And (Acteur like '*" & Me.Txt_Acteur & "*')" End If If Me.Chk_Annee Then Wh = Wh & " And (Annee = '" & Me.Lst_Annee & "')" End If If Me.Chk_Age Then GrpBy = GrpBy & ", IDAgeLegal" Hav = Hav & " And (IDAgeLegal = " & Me.Md_Age & ")" End If If Me.Chk_Pays Then GrpBy = GrpBy & ", IDPays_film" Hav = Hav & " And (IDPays_film = " & Me.Md_Pays & ")" End If SQL = Sel & Wh & GrpBy & Hav & ");" Set NewQuery = CurrentDb.CreateQueryDef("R_Choix", SQL) Me.Lbl_Stats.Caption = DCount("*", "R_Choix") & " films sur " & DCount("*", "T_Films") & " correspondent à votre recherche." Me.F_Films2.Form.RecordSource = "SELECT T_Films.* FROM T_Films INNER JOIN R_Choix ON T_Films.ID_Film = R_Choix.ID_Film ORDER BY T_Films.Titre;" Me.F_Films2.Form.Requery Me.lbl_Stats2.Caption = Me.F_Films2.Form.CurrentRecord & " / " & DCount("*", "R_Choix") Me.Md_Recherche.RowSource = "SELECT T_Films.ID_Film, Titre FROM T_Films INNER JOIN R_Choix ON T_Films.ID_Film = R_Choix.ID_Film ORDER BY Titre;" Verif End Sub
Partager