Voilà ce qui se passe au niveau des colonnes :
Pièce jointe 13128
Sinon par rapport à l'erreur pour la zone de liste résultat voici l'erreur :
Pièce jointe 13129
Voilà ce qui se passe au niveau des colonnes :
Pièce jointe 13128
Sinon par rapport à l'erreur pour la zone de liste résultat voici l'erreur :
Pièce jointe 13129
~ Lola ~
C'est ce que je fais, je ne vois pas où peut être la différence. Voici ma base de données :
Pièce jointe 13135
Est ce que tu veux une différence ou non ? Si oui où parce que moi je me creuse la tête mais je ne vois pas...
~ Lola ~
Merci c'est super ça marche...
Grâce à vous j'ai vraiment compris tout ce que je faisais, au début j'avais un peu de mal...
~ Lola ~
Alors voilà je continue mon formulaire mais encore j'ai un peu de mal.
Maintenant je veux afficher les enregistrements entre deux dates : DateDébut et DateFin.
Est ce que vous savez s'il existe un moyen de remplacer like par > ou <?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 If Me.q2Début Then Sql = Sql & "And ARRET!Date like '*" & Me.q2DateDébut & "*' " End If If Me.q2Fin Then Sql = Sql & "And ARRET!Date like '*" & Me.q2DateFin & "*' " End If
En effet je veux afficher toutes les dates qui sont supérieures à la date de début et inférieures à la date de fin....
Merci de m'aider c'est super sympa...
~ Lola ~
Salut,
non en fait avec deux listes de choix ( chaque liste contient les dates qui sont dans la table, ça empèche les erreurs si l'utilisateur entre une date qui n'existe pas dans la table )
Voilà un imprime écran du formulaire :
Pièce jointe 13212
En fait mon objectif est que dans les résultats je puisse voir les blocages entre une date A et une date B, ou que les planifié ou les deux à la fois.
Si je ne suis pas claire n'hésite pas à me demander plus d'explications.
~ Lola ~
J'ai essayé avec ton code mais non ça ne marche pas...
Alors voilà ma base de données, j'ai une nouvelle erreur par rapport à la MAJ que je n'avais pas précédement...
Pièce jointe 13215
~ Lola ~
L'erreur par rapport à la MAJ vient a priori de l'événement beforeupdate et du code =[Regroupement pour les dates]!Date sur q2datedébut. En le supprimant cela fonctionne...
Ensuite, ton code c'est cela
ARRET.Date > [Forms]![Formulaire]![Datedébut] And Date < [Forms]![Formulaire]![DateFin]
c'est pas plutôt cela car Date c'est un mot réservé pour la date actuelle
ARRET.Date > [Forms]![Formulaire]![q2Datedébut]) And (ARRET.Date < [Forms]![Formulaire]![q2DateFin])
Quand tu selectionnes q3planifié et Q3blocage, ta clause SELECT prend 2 where
Met un MsgBox Sql dans la procédure refreshquery pour voir le résultat
Voilà tous mon code mais à aucun moment il n'y a de BeforeUpdate, regarde la pièce jointe que j'ai envoyé dans le post précédent il y a mon formulaire.
Est ce que tu vois pourquoi cela fait cette erreur...?
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 Option Compare Database 'au chargement de la page on veut afficher tous les enregistrements de la table ARRET Private Sub Form_Load() Me.résultats.RowSource = "SELECT NuméroAuto, CodeSystème, Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET;" Me.résultats.Requery End Sub 'fonction qui définit l'instruction SQL Private Sub RefreshQuery() Dim Sql As String 'on choisit les champs que l'on veut afficher Sql = "SELECT NuméroAuto, CodeSystème, Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET " 'si q3Blocage est coché alors on rajoute une condition à l'instruction SQL If Me.q3Blocage Then Me.q2DateDébut.RowSource = "SELECT NuméroAuto, CodeSystème, Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET WHERE Type='Blocage';" Me.q2DateFin.RowSource = "SELECT NuméroAuto, CodeSystème, Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET WHERE Type='Blocage';" Me.q2DateDébut.Requery Me.q2DateFin.Requery Sql = Sql & "WHERE ARRET!Type = 'Blocage' AND ARRET.Date>[Forms]![Formulaire]![q2DateDébut] And Date<[Forms]![Formulaire]![q2DateFin]" End If 'si q3Planifié est coché alors on rajoute une condition à l'instruction SQL If Me.q3Planifié Then Me.q2DateDébut.RowSource = "SELECT NuméroAuto, CodeSystème, Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET WHERE Type='Planifié';" Me.q2DateFin.RowSource = "SELECT NuméroAuto, CodeSystème, Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET WHERE Type='Planifié';" Me.q2DateDébut.Requery Me.q2DateFin.Requery Sql = Sql & "WHERE ARRET!Type = 'Planifié' AND ARRET.Date>[Forms]![Formulaire]![q2DateDébut] And Date<[Forms]![Formulaire]![q2DateFin]" End If Sql = Sql & ";" 'on affecte à la listbox 'résultats' l'instruction SQL Me.résultats.RowSource = Sql Me.résultats.Requery End Sub 'action quand on clique sur la case à cocher pour la date Private Sub q2Début_Click() 'on veut que la liste de date ne soit visible que si on clique dans la case If Me.q2Début = True Then Me.q2DateDébut.Visible = True Else Me.q2DateDébut.Visible = False End If RefreshQuery End Sub 'action quand on clique sur la zone de liste modifiable pour la date Private Sub q2DateDébut_AfterUpdate() RefreshQuery End Sub 'action quand on clique sur la zone de liste modifiable pour la date Private Sub q2DateFin_AfterUpdate() RefreshQuery End Sub 'action quand on clique sur la case à cocher pour la date Private Sub q2Fin_Click() 'on veut que la liste de date ne soit visible que si on clique dans la case If Me.q2Fin = True Then Me.q2DateFin.Visible = True Else Me.q2DateFin.Visible = False End If RefreshQuery End Sub 'action quand on clique sur la case à cocher pour les blocages Private Sub q3Blocage_Click() RefreshQuery End Sub 'action quand on clique sur la case à cocher pour les arrêts planifiés Private Sub q3planifié_Click() RefreshQuery End Sub 'action quand on double clique sur la zone de liste pour avoir les résultats Private Sub résultats_DblClick(Cancel As Integer) DoCmd.OpenForm "Formulaire1", acNormal, , "[NuméroAuto] = " & Me.résultats End Sub
Merci de m'aider
~ Lola ~
met ton formulaire en mode création puis clic droit/ propriétés sur le controle q2dateDébut. Puis onglet événement tu verras que tu as un événement BeforeUpdate définit
Regarde sur l'évènement Avant MAJ de Q2DateDébutEnvoyé par christabin
Ok merci maintenant c'est mieux, comment ça se fait que quand je choisit une première fois deux dates et Blocage par exemple, je ne puisse pas choisir une deuxième fois deux autres dates ?
La liste de choix me met les numéro Auto du type d'arrêt demandé....
Pièce jointe 13223
Merci pour ta première solution, je ne sais pas comment cet afterupdate est arrivé là...
~ Lola ~
Au niveau du Blocage et du Planifié au niveau du code Click j'ai mis de façon à ce qu'on puisse n'en sélectionner que l'un des deux :
Comme ca ma clause select ne peut pas avoir deux where, si je peux améliorer pour avoir les deux ça serait mieux mais le choix entre deux dates est plus important.
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 q3Blocage_Click() q3Planifié = False RefreshQuery End Sub Private Sub q3planifié_Click() q3Blocage = False RefreshQuery End Sub
~ Lola ~
L'erreur par exemple vient de là dans refreshqueryEnvoyé par lola06
tu dis à ton code de tout sélectionner. Quand le code est appelé, il affiche donc tout et comme dans ton controle dans l'onglet "données" en dessous de "contenu", le nombre de colonne liée est "1" il affiche la première du select soit "numéro automatique"
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.q2DateFin.RowSource = "SELECT NuméroAuto, CodeSystème,Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET WHERE Type='Planifié';"
Ta rowsource devrait plutot être
Pour avoir les 2 cas, tu peux ajouter un truc du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.q2DateDébut.RowSource = "SELECT Date FROM ARRET WHERE Type='Blocage';"
tu dois retravailler ta procédure refresh query
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 If Me.q3Blocage And Me.q3Planifié Then Me.q2DateDébut.RowSource = "SELECT ....Type='Planifié';" Me.q2DateFin.RowSource = "SELECT ....Type='Planifié';" Me.q2DateDébut.Requery Me.q2DateFin.Requery Sql = Sql & "WHERE (ARRET!Type = 'Planifié' and ARRET!Type = 'Blocage') AND .... End If
Ok merci, je m'y met et je vois ce que ça donne, merci encore de m'aider...
~ Lola ~
bon allez ma fille dormant c'est jour de bonté avant de récupérer la numéro 2, je vais ajouter une piste
tu dois gérer les cas
si une case est cochée l'autre ne l'est pas
les 2 cochées
soit en vba
If Me.q3Planifié And Not (Me.q3Blocage) Then
if Me.q3Blocage And Not (Me.q3Planifié) Then
if Me.q3Blocage and Me.q3Planifié
Un autre exemple dans lequel tu opères ton tri sur "tout","Blocage","Planifié" ou entre 2 dates sur "tout","Blocage","Planifié" par l'intermédiaire d'un groupe d'option.
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