Bonjour, j'ai un formulaire qui me permet de rechercher des pièces dans ma base. La recherche s'affiche dans une zone de liste, et la quantité d'information est réduite en fonction du filtre effectué.
J'ai également mis un compteur, afin de savoir combien d'articles correspondent à ma recherche filtrée, par rapport au nombre d'article total.
En plus des mes filtres principaux, qui sont enfait des comboBox, j'ai mis un champs libre, ou les utilisateurs peuvent marquer une référence, et voir la zone de liste diminuer jusqu'à obtenir la référence qu'ils recherche.
Voici le code de ce champ libre:
J'ai ensuite un refrshQuery, qui me permet de faire la filtration en fonction du choix dans les comboBox, et du choix dans le champ libre. Mais dans mon RefreshQuery, je ne sais pas comment exprimer la partie du champ libre?
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 Private Sub txtRéférence_Change() Dim valeur, debutSQL, finSQL, sql As String Dim zoneListe As ListBox If Len(txtRéférence.Text) > 0 Then sql = "SELECT tbl_Référence.ID_Référence, tbl_Référence.CmdeAuto, tbl_Désignation.Désignation, tbl_Référence.Référence, tbl_Référence.StockActuel, tbl_Marques.Marque, tbl_Lignes.Designation as Ligne ,tbl_Machines.Designation as Machine, tbl_Lignes.Id_Ligne, tbl_Machines.Id_Machine, tbl_Désignation.ID_Désignation, tbl_Marques.ID_Marque FROM (tbl_Désignation INNER JOIN (tbl_Marques INNER JOIN tbl_Référence ON tbl_Marques.[ID_Marque] = tbl_Référence.[ID_Marque]) ON tbl_Désignation.[ID_Désignation] = tbl_Référence.[ID_Désignation]) INNER JOIN ((tbl_Lignes INNER JOIN tbl_Machines ON tbl_Lignes.[Id_Ligne] = tbl_Machines.[Id_Ligne]) INNER JOIN tbl_Nomenclature ON tbl_Machines.Id_Machine = tbl_Nomenclature.ID_Machine) ON tbl_Référence.ID_Référence = tbl_Nomenclature.ID_Référence WHERE (((tbl_Référence.ID_Référence)<>0)) and tbl_Référence.Référence like '" & txtRéférence.Text & "*';" Me.lstResults.RowSource = sql Me.cmbRechLigne.Value = Null Me.cmdRechCat.Value = Null Me.cmbRechMachine.Value = Null Me.ImgLigne.Picture = "" Me.ImgMachine.Picture = "" Else RefreshQuery End If End Sub
Voici le code de mon refreshQuery, j'ai mis en rouge le code qui me permet d'adapter ma liste par exemple en fonction de la ligne de production choisie:
Se qui se passe actuelement, c'est que sa me filtre bien en fonction de se que les utilisateurs inscrivent dans le champ libre, mais le compteur 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 Public Sub RefreshQuery() Dim sql As String, sqlCompteur As String Dim SQLWhere As String Dim oRst As DAO.Recordset Dim odb As DAO.Database Set odb = CurrentDb sql = "SELECT tbl_Référence.ID_Référence, IIF(tbl_Référence.CmdeAuto =true,""oui"",""non"") as [Cmde Auto], tbl_Désignation.Désignation, tbl_Référence.Référence, tbl_Référence.StockActuel as [Stock Actuel], tbl_Marques.Marque, tbl_Lignes.Designation as [Ligne de production],tbl_Machines.Designation as [Machine], tbl_Lignes.Id_Ligne, tbl_Machines.Id_Machine, tbl_Désignation.ID_Désignation, tbl_Marques.ID_Marque FROM (tbl_Désignation INNER JOIN (tbl_Marques INNER JOIN tbl_Référence ON tbl_Marques.[ID_Marque] = tbl_Référence.[ID_Marque]) ON tbl_Désignation.[ID_Désignation] = tbl_Référence.[ID_Désignation]) INNER JOIN ((tbl_Lignes INNER JOIN tbl_Machines ON tbl_Lignes.[Id_Ligne] = tbl_Machines.[Id_Ligne]) INNER JOIN tbl_Nomenclature ON tbl_Machines.Id_Machine = tbl_Nomenclature.ID_Machine) ON tbl_Référence.ID_Référence = tbl_Nomenclature.ID_Référence WHERE tbl_Référence.ID_Référence<>0" If Not IsNull(Me.cmbRechLigne) Then sql = sql & " and tbl_Machines.Id_Ligne = " & Me.cmbRechLigne & " " End If If Me.cmbRechMachine <> "" Then sql = sql & " and tbl_Nomenclature.ID_Machine = " & Me.cmbRechMachine & " " End If If Me.cmdRechCat <> "" Then sql = sql & " and tbl_Désignation.ID_Catégorie = " & Me.cmdRechCat & " " End If sqlCompteur = "select count(*) from (" & sql & ");" Set oRst = odb.OpenRecordset(sqlCompteur, dbOpenDynaset) Me.txtNombreLigneCritéres.Caption = oRst.Fields(0).Value sqlCompteur = "select count(*) from( select * from tbl_Référence);" Set oRst = odb.OpenRecordset(sqlCompteur, dbOpenDynaset) Me.txtNombreLignetotal.Caption = oRst.Fields(0).Value SQLWhere = Trim(Right(sql, Len(sql) - InStr(sql, "Where ") - Len("Where ") + 1)) sql = sql & ";" Me.lstResults.RowSource = sql Me.lstResults.Requery End Sub
Merci
Partager