Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/05/2011, 10h19   #1
Invité de passage
 
Inscription : mai 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 15
Points : 3
Points : 3
Par défaut Resultats dans un formulaire de recherche multi-critères qui ne s'affichent pas

Bonjour :

Voici mon code VBA.
Les resultats de la selction devraient s'afficher dans la zone de liste ne s'affichent pas.
Quelqu'un voit-il le problème ? Merci.



Code :
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
77
78
79
80
81
82
83
84
85
86
87
Private Sub chkRechDate_Click()
 
If Me.chkRechDate Then
    Me.cmbDate.Visible = False
Else
    Me.cmbDate.Visible = True
End If
 
RefreshQuery
 
End Sub
 
 
Private Sub chkRechAffaire_Click()
 
If Me.chkRechAffaire Then
    Me.cmbAffaires.Visible = False
Else
    Me.cmbAffaires.Visible = True
End If
 
RefreshQuery
 
End Sub
 
 
 
Private Sub cmbDate_BeforeUpdate(Cancel As Integer)
 
RefreshQuery
 
End Sub
 
Private Sub cmbAffaires_BeforeUpdate(Cancel As Integer)
 
RefreshQuery
 
End Sub
 
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 "cmb"
            ctl.Visible = False
 
    End Select
Next ctl
 
Me.lstResults.RowSource = "SELECT [CNQparAffaire].affaire, [CNQparAffaire].SommeDeCNQ, [CNQparAffaire].Date FROM [CNQparAffaire]ORDER BY [CNQparAffaire].Date;"
 
Me.lstResults.Requery
 
End Sub
 
Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String
 
SQL = "SELECT [CNQparAffaire].affaire, [CNQparAffaire].SommeDeCNQ, [CNQparAffaire].Date FROM [CNQparAffaire]ORDER BY [CNQparAffaire].Date Where CNQparAffaire!SommeDeCNQ <> 0 "
 
If Not Me.chkRechDate Then
    SQL = SQL & "And CNQparAffaire!Date = '*" & Me.cmbDate & "*' "
End If
If Not Me.chkRechAffaire Then
    SQL = SQL & "And CNQparAffaire!affaire = '" & Me.cmbAffaires & "' "
End If
 
 
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
 
SQL = SQL & ";"
 
'Me.lblStats.Caption = DCount("*", "Medias", SQLWhere) & " / " & DCount("*", "Medias")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery
 
End Sub
lanaine07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 18h57   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

Dans cette partie du code, tu fais une comparaison avec des caractères génériques (*) :
Code :
1
2
3
If Not Me.chkRechDate Then
   SQL = SQL & "And CNQparAffaire!Date = '*" & Me.cmbDate & "*' "
End If
Il faut utiliser l'opérateur de comparaison LIKE à la place de =.
Code :
1
2
3
If Not Me.chkRechDate Then
   SQL = SQL & "And CNQparAffaire!Date LIKE '*" & Me.cmbDate & "*' "
End If
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 08h13   #3
Invité de passage
 
Inscription : mai 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 15
Points : 3
Points : 3
J'ai bien changé que ce que tu m'a dit (une erreur de ma part) mais cela ne fonctionne toujours pas
lanaine07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 18h25   #4
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,
Si CNQparAffaire!Date et Me.cmbDate sont de type Date/Heure
Code :
1
2
3
If Not Me.chkRechDate Then
   SQL = SQL & "And CNQparAffaire!Date = #" & Format(Me.cmbDate, "mm\/dd\/yyyy") & "# "
End If
Pour déboguer, après la ligne
ajoutes une ligne
Copie le code SQL de la fenêtre d'exécution (Ctrl+G depuis l'éditeur Visual Basic)
et colles le dans une nouvelle requête pour le tester.
Voir Débogage des requêtes écrites en VBA

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h12.


 
 
 
 
Partenaires

Hébergement Web