Bonjour,
Je souhaiterai créer un formulaire dynamique de recherche, c'est à dire, un formulaire composé de Textbox et d'une Datagrid se mettant à jour à chaque changement d'une Textbox.
Voici mon code :
Malheureusement, cela ne fonctionne pas.
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 Private Sub txtNomEE_Change() Rafraichir_Grille End Sub Private Sub txtNomEU_Change() Rafraichir_Grille End Sub Private Sub txtNPdP_Change() Rafraichir_Grille End Sub Private Sub Rafraichir_Grille() Dim cn As ADODB.Connection Dim cmd As ADODB.Command Dim req As String 'Initialisation de la connection Set cn = New Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & SRC & ";" & _ "User Id=Admin; Password=" 'Création de la requète req = "SELECT [Plan de Prévention].[Numéro de PDP], " & _ "[Plan de Prévention].[Nom de l'entreprise extérieur], " & _ "[Plan de Prévention].[Nature des travaux], " & _ "[Plan de Prévention].[Date d'émission], " & _ "[Plan de Prévention].[Date de validité], " & _ "[Plan de Prévention].[Nom de l'entreprise utilisatrice], " & _ "[Autorisation de travail].[Numéro d'autorisation de travail], " & _ "Responsable.[Nom du Responsable], " & _ "Responsable.[Prenom du Responsable] " & _ "FROM Responsable INNER JOIN ([Plan de Prévention] " & _ "INNER JOIN [Autorisation de travail] ON " & _ "[Plan de Prévention].[Numéro de PDP] = [Autorisation de travail].[Numéro de PDP]) ON " & _ "Responsable.[ID du Responsable] = [Plan de Prévention].[ID du Responsable] " & _ "WHERE [Plan de Prévention].[Numéro de PDP] <> '0' " 'Si Numéro de PDP n'est pas vide, on ajoute la contraite à la recherche If (txtNPdP <> "") Then req = req & "AND [Plan de Prévention].[Numéro de PDP] LIKE '" & txtNPdP & "%' " End If 'Si le nom de l'EE n'est pas vide, " " If (txtNomEE <> "") Then req = req & "AND [Plan de Prévention].[Nom de l'entreprise extérieur] LIKE '%" & txtNomEE & "%' " End If 'Si le nom de l'EU n'est pas vide, " " If (txtNomEU <> "") Then req = req & "AND [Plan de Prévention].[Nom de l'entreprise utilisatrice] LIKE '%" & txtNomEU & "%' " End If 'Ajout du point virgule à la reqète finale req = req & ";" 'Création de la Command Set cmd = New Command Set cmd.ActiveConnection = cn cmd.CommandText = req 'Exécution de la requète Dim rs As Recordset Set rs = cmd.Execute 'Do While Not rs.EOF ' MsgBox rs![Numéro de PDP] ' rs.MoveNext 'Loop Set grdPdP.DataSource = rs grdPdP.Refresh End Sub
En effet, bien que la requète retourne le bon résultat (tester grâce à la boucle While en commentaire), il ne s'affiche pas dans le DataGrid qui se vide entièrement.
J'ai consulter de nombreux tutoriaux sur le sujet, sans jamais réussir à voir ce qui clocher.
Merci d'avance.
Partager