Bonjour à tous,
Avant de commencer, je voudrais vous dire que j'ai fais des recherches sur le forum, entre autres, avant de poster ici, mais que malheureusement elles se sont avérées infructueuses.
Alors, je suis actuellement en train de me construire une "vidéothèque" dans le but de gérer les films que je possède sur différents disques dures. Malheureusement, tout ne marche pas comme je l'aurais souhaité. Explications :
commençons par poser les bases, voici le fameux formulaire de recherche qui me pose des soucis
et maintenant le code qui fait fonctionner + ou - bien ce formulaire :
Ce formulaire me pose deux problèmes, que voici :
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
47
48
49
50
51
52
53
54 Private Sub Form_Open(Cancel As Integer) Me.[recherche_film_sous-formulaire].Form.RecordSource = "film" Me.Modifiable42.RowSource = "SELECT ""-- Tous --"" FROM [film] UNION SELECT [film_format_video] FROM [film] GROUP BY [film_format_video]" Me.Modifiable44.RowSource = "SELECT ""-- Tous --"" FROM [film] UNION SELECT [film_emplacement] FROM [film] GROUP BY [film_emplacement]" Me.[recherche_film_sous-formulaire].Form.AllowEdits = False Me.[recherche_film_sous-formulaire].Form.AllowAdditions = False Me.[recherche_film_sous-formulaire].Form.AllowDeletions = False End Sub Private Sub Texte46_Change() End Sub Private Sub Modifiable42_Change() Dim LaValeur1 As String LaValeur1 = Me.Modifiable42.Value If LaValeur1 = "-- Tous --" Then Me.[recherche_film_sous-formulaire].Form.RecordSource = "film" Me.Modifiable44.RowSource = "SELECT ""-- Tous --"" FROM [film] UNION SELECT [film_emplacement] FROM [film] GROUP BY [film_emplacement]" Else Me.[recherche_film_sous-formulaire].Form.RecordSource = "SELECT [film_clef], [film_nom], [film_format_video], [film_taille], [film_emplacement] FROM [film] WHERE [film_format_video]=""" & LaValeur1 & """" Me.Modifiable44.RowSource = "SELECT ""-- Tous --"" FROM [film] UNION SELECT [film_emplacement] FROM [film] WHERE film_format_video=""" & LaValeur1 & """ GROUP BY [film_emplacement]" End If Me.[recherche_film_sous-formulaire].Form.Requery Me.[recherche_film_sous-formulaire].Form.AllowEdits = False Me.[recherche_film_sous-formulaire].Form.AllowAdditions = False Me.[recherche_film_sous-formulaire].Form.AllowDeletions = False End Sub Private Sub Modifiable44_Change() Dim LaValeur1 As String Dim LaValeur2 As String Dim ClauseWhere As String LaValeur1 = Me.Modifiable42.Value LaValeur2 = Me.Modifiable44.Value ClauseWhere = "" ' Définition de la clause where If LaValeur1 = "-- Tous --" Then Clause1 = "" Else Clause1 = "[film_format_video]=""" & LaValeur1 & """ And " If LaValeur2 = "-- Tous --" Then Clause2 = "" Else Clause2 = "[film_emplacement]=""" & LaValeur2 & """ And " ClauseWhere = "WHERE " & Clause1 & Clause2 If ClauseWhere = "WHERE " Then ClauseWhere = "" If Right(ClauseWhere, 4) = "AND " Then ClauseWhere = Left(ClauseWhere, Len(ClauseWhere) - 4) ' Affectation des sources au Sous-formulaire et aux listes Me.[recherche_film_sous-formulaire].Form.RecordSource = "SELECT [film_clef], [film_nom], [film_format_video], [film_taille], [film_emplacement] FROM [film] " & ClauseWhere Me.Modifiable42.RowSource = "SELECT ""-- Tous --"" FROM [film] UNION SELECT [film_format_video] FROM [film] " & ClauseWhere & " GROUP BY [film_format_video]" Me.[recherche_film_sous-formulaire].Form.Requery Me.[recherche_film_sous-formulaire].Form.AllowEdits = False Me.[recherche_film_sous-formulaire].Form.AllowAdditions = False Me.[recherche_film_sous-formulaire].Form.AllowDeletions = False End Sub
1) Premièrement, je ne sais pas comment ingérer la zone de texte (Texte46) pour faire ma recherche. L’idée c’est que si je rentre « narnia » dans la zone de texte il me sorte dans le sous-formulaire (recherche_film_sous-formulaire) tous les films qui contiennent dans le titre (champ film_nom de la table film) le mot narnia (il faut que « le monde de narnia » sorte dans les résultats donc le titre ne commence pas forcement par ce que l’on rentre dans la zone de texte).
De plus, j’aimerai que, ce que l’on rentre dans la zone de texte, vienne mettre à jour les deux listes (Modifiable42 et Modifiable44) comme on le fait quand on modifie le Modifiable42. (ex : si on rentre « 127 heures » dans la zone de texte alors dans la liste déroulante « format vidéo », = Modifiable42, il ne reste plus que l’extension « .mp4 »).
La question est : comment formuler tout ça en code ???
j'ai essayé d'utiliser cela :
Mais avec cela je suis obligé de crée une liste deroulante "lstFilm" qui elle me sort bien la liste que je veux. Or moi je voudrais que cette liste elle soit dans le sous formulaire ... de plus les listes déroulantes (Modifiable42 et Modifiable44) ne sont pas mise à jour (car pas de code ...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Texte46_Change() Dim QRY As String QRY = "SELECT * FROM film " _ & "WHERE film_nom Like '" & Texte46.Text & "*';" If Len(Texte46.Text) > 0 Then Me.lstFilm.RowSource = QRY Else Me.lstFilm.RowSource = "" End If End If
2) Deuxième et dernier problème : actuellement, si on sélectionne un « format vidéo » dans la liste déroulante alors la liste « emplacement » ce met à jour, tout comme le sous formulaire.
De plus si on sélectionne un « format » puis un « emplacement », le sous formulaire suit, et considère comme actif nos deux choix (on a donc un « double tri »). Par contre, si on fait l’inverse, on rencontre un problème. Explication :
Donc jusqu’ici pas de problème la liste « format vidéo » c’est bien mise à jour tout comme le sous formulaire. Mais si maintenant on sélectionne un « format » alors là c'est le drame :
On voit que le sous formulaire ne tient plus compte de notre choix concernant l’emplacement (il faut donc re-sélectionner l’emplacement pour que le sous formulaire en tienne compte).
Alors la question c’est comment faire, au niveau du code, pour ne plus avoir ce cas ???
Voila c'est fini ... un grand merci à ceux (et celles bien sur) qui arriveront à la fin de cette demande (il faut bien reconnaître que c'est long comme explication ...)
Et surtout, merci pour ceux (et celles bien sur) qui aurons des réponses à me proposer !!!
Partager