Salut,
j ai utilise le code donné dans le tutoriel access en ce qui concerne la réalisation d'une recherche multi-critères en utilisant une procédure, soit dans un module:
et sur le bouton de recherche:
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 Public Sub Restriction(ByVal Chaine As String, _ ByVal ChamP As String, ByVal matable As String, _ ByRef ArGument As Integer, ByRef ClausE As String, ByRef astype As Integer) ' Choix du type : 0 pour un string, 1 pour un numérique ou booleen ' 2 pour une date 'Construit la requête au premier passage If ArGument = 0 Then 'Elimine les espaces matable = Trim$(matable) 'Si table est une sous requete :(commence par select) If InStr(1, matable, "SELECT ", vbTextCompare) <> 0 Then 'Enleve le ; s'il existe If Right(matable, 1) = ";" Then _ matable = Left(matable, Len(matable) - 1) 'encadre la sous requete avec des () ClausE = "SELECT * FROM (" & matable & ")" Else ClausE = "SELECT * FROM " & matable End If End If If Chaine <> "" Then If ArGument = 0 Then ' Ajoute le WHERE ClausE = ClausE & " WHERE " ' Ajout de l'opérateur "AND" si le where existe déja Else: ClausE = ClausE & " AND " End If Select Case astype Case 0 'Ajoute le critère si le type est texte ClausE = ClausE & ChamP & " like " & Chr(34) & Chaine & "*" & Chr(34) Case 1 'Ajoute le critère si le type est Numerique ClausE = ClausE & ChamP & "=" & Chaine Case 2 'Ajoute le critère si le type est date ClausE = ClausE & ChamP & "=#" & Format(Chaine, "mm/dd/yyyy") & "#" End Select ArGument = ArGument + 1 End If End Sub
cette recherche ne se fait que dans la table Tbl_Materiel. Si je desire la faire dans Tbl_Materiel et dans une autre table et que le resultat affiche les champs des 2 tables sur lesquels j ai fait la recherche, dois rajouter une 2e table dans le code ci dessus?
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 Private Sub BRechercher_Click() Dim SQL As String Dim NomTable As String Dim Compteur As Integer NomTable = "Tbl_Materiel" 'Appel de la procedure de creation de requête 'pour le numero de série de type texte Restriction Nz(Tserie, ""), "NumSerie", NomTable, Compteur, SQL, 0 'pour la date achat de type date (2) Restriction Nz(TDate, ""), "DateAchat", NomTable, Compteur, SQL, 2 'Pour la marque de type texte Restriction Nz(TMarque, ""), "Marque", NomTable, Compteur, SQL, 0 'Affecte la requête au sous formulaire Me.Tbl_Materiel.Form.RecordSource = SQL End Sub
La ligne Me.Tbl_Materiel.Form.RecordSource = SQL peut elle etre adapté pour 2 tables?
Partager