Bonjour,
J'ai réaliser gràce a l'aide du tutoriel de cafeine un module de recherche par critére.
Dans mon champ de liste où s'affiche mais résultats je voudrais qu'un champ quand il est Null ne s'affiche pas dans la liste.
Merci de vos réponses.
Bonjour,
J'ai réaliser gràce a l'aide du tutoriel de cafeine un module de recherche par critére.
Dans mon champ de liste où s'affiche mais résultats je voudrais qu'un champ quand il est Null ne s'affiche pas dans la liste.
Merci de vos réponses.
Bonjour,
Pour ne pas inclure les valeurs nulles dans le résultat d'une requête, tu peux placer Est Pas Null ou Is Not Null dans la ligne critère du champ concerné.Envoyé par froutloops62
Bon courage et @+
Je le mets où ? Voila mon code :
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 Private Sub RefreshQuery() Dim SQL As String Dim SQLWhere As String SQL = "SELECT N°, Opérateur, Objectif, Client, Commande, Date FROM Réalisation Where Réalisation!N° <> 0 " If Not Me.chkAtelier Then SQL = SQL & "And Réalisation!Atelier = '" & Me.cmbAtelier & "' " End If If Not Me.chkOperateur Then SQL = SQL & "And Réalisation!Opérateur = '" & Me.cmbOperateur & "' " End If If Not Me.chkObjectif Then SQL = SQL & "And Réalisation!Objectif = '" & Me.cmbObjectif & "' " End If If Not Me.chkClient Then SQL = SQL & "And Réalisation!Client = '" & Me.cmbClient & "' " End If If Not Me.chkCommande Then SQL = SQL & "And Réalisation!Commande like '" & Me.txtCommande & "' " End If If Not Me.chkDate Then SQL = SQL & "And Réalisation!Date >= #" & Format(Me.WDateFrom, "mm/dd/yyyy") & "# And Réalisation!Date <= #" & Format(Me.WDateTo, "mm/dd/yyyy") & "# " End If If Not Me.chkPosteC Then SQL = SQL & "And Réalisation![Poste Calage] <> " & Me.copEnlever End If If Not Me.chkPosteC Then SQL = SQL & "And Réalisation![Poste Calage] = " & Me.copAfficher End If SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1)) SQL = SQL & " Order by Réalisation.Date DESC;" Debug.Print SQLWhere Me.lblStats.Caption = DCount("*", "Réalisation", SQLWhere) & " / " & DCount("*", "Réalisation") Me.lstResults.RowSource = SQL Me.lstResults.Requery End Sub
Quel champ veux-tu contrôler?
Prenons un exemple, que tu voudrais contrôler Atelier. Dans la clause WHERE, tu écrirs
Et toc!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ... AND [Atelier] Is Not Null ...
Je veux que les lignes où le champ "objectif" est nul ne soit pas visible. Mais déjà au demarrage quand aucun critére n'est coché.
Comment je modifie le code plus explicitement.
Bonjour,
Envoyé par froutloops62@+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 If Not Me.chkObjectif Then SQL = SQL & "And (Réalisation!Objectif = '" & Me.cmbObjectif & "' AND Réalisation!Objectif Is Not Null) " End If 'ou en format plus court If Not Me.chkObjectif Then SQL = SQL & "And ([Objectif] = '" & Me.cmbObjectif & "' AND [Objectif] Is Not Null) " End If
ça passe pas, moi je veux plus avoir les lignes vides dans le champ zone de liste résultats.
En piéce jointe, j'ai mis ma situation actuelle avec les blancs que je ne veux pas.
Bonjour et bonne fin de week-end,
Lors de ma précédente proposition, j'ai mis le critère au niveau de la ligne colorée en bleu. Effectivement, si chkObjectif n'est pas coché, le critère n'est pas pris en compte!
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 Private Sub RefreshQuery() Dim SQL As String Dim SQLWhere As String SQL = "SELECT N°, Opérateur, Objectif, Client, Commande, Date FROM Réalisation Where Réalisation!N° <> 0 AND Réalisation!Objectif Is Not Null " If Not Me.chkAtelier Then SQL = SQL & "And Réalisation!Atelier = '" & Me.cmbAtelier & "' " End If If Not Me.chkOperateur Then SQL = SQL & "And Réalisation!Opérateur = '" & Me.cmbOperateur & "' " End If If Not Me.chkObjectif Then SQL = SQL & "And Réalisation!Objectif = '" & Me.cmbObjectif & "' " End If If Not Me.chkClient Then SQL = SQL & "And Réalisation!Client = '" & Me.cmbClient & "' " End If If Not Me.chkCommande Then SQL = SQL & "And Réalisation!Commande like '" & Me.txtCommande & "' " End If If Not Me.chkDate Then SQL = SQL & "And Réalisation!Date >= #" & Format(Me.WDateFrom, "mm/dd/yyyy") & "# And Réalisation!Date <= #" & Format(Me.WDateTo, "mm/dd/yyyy") & "# " End If If Not Me.chkPosteC Then SQL = SQL & "And Réalisation![Poste Calage] <> " & Me.copEnlever End If If Not Me.chkPosteC Then SQL = SQL & "And Réalisation![Poste Calage] = " & Me.copAfficher End If SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1)) SQL = SQL & " Order by Réalisation.Date DESC;" Debug.Print SQLWhere Me.lblStats.Caption = DCount("*", "Réalisation", SQLWhere) & " / " & DCount("*", "Réalisation") Me.lstResults.RowSource = SQL Me.lstResults.Requery End Sub
Ce qu'il faut faire c'est de placer ce critère quelque soit l'état des case à cocher. Je l'ai mis dans la première ligne de la variable SQL en gras et en vert!
Je pense que cela résoud ton problème. Il faut aussi comprendre que mon rôle se limitait à te montrer comment exclure les valeurs nulles de ta requête mais non pas à le placer exactement où il faut, je pense que c'est assez évident tu ne crois pas.
Bon courage et @+
Le probleme avec le code c'est que quand j'ouvre le formulaire, j'ai encore les blancs, si je décoche le critére Objectif et que je le recoche (sans rien mettre au niveau du critere)
là ça fonctionne
J'aimerais l'avoir directement sans les Null
peut être que ça vient de là
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 Private Sub Form_Load() Dim ctl As Control For Each ctl In Me.Controls Select Case Left(ctl.Name, 3) Case "chk" ctl.Value = -1 Case "lbl" ctl.Caption = "- * - * -" Case "txt" ctl.Enabled = False ctl.Value = "" Case "cmb" ctl.Enabled = False Case "WDa" ctl.Enabled = False ctl.Value = Date Case "cop" ctl.Enabled = False ctl.Value = 0 End Select Next ctl Me.lstResults.RowSource = "SELECT N°, Opérateur, Objectif, client, Commande, Date FROM Réalisation ORDER BY Réalisation.Date DESC;" Me.lstResults.Requery End Sub
Bonjour,
Bon courage et @+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Me.lstResults.RowSource = "SELECT N°, Opérateur, Objectif, client, Commande, Date " & _ "FROM Réalisation " & _ "WHERE Réalisation!Objectif Is Not Null " & _ "ORDER BY Réalisation.Date DESC;"
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager