Bonsoir,
...les résultats du formulaire restent sur le résultat de la dernière requête effectuée et ne se réinitialisent pas...
Il faut enlever le filtre.
1 2
| Me.FilterOn = False
Me.Filter = "" |
Pour réinitialiser les contrôles zones de textes, je préfère affecter Null plutôt que "".
Voici un code un peu plus simple pour remettre la valeur par défaut.
Je remets dans chaque contrôle (zone de liste déroulante et zone de texte), la valeur par défaut définie dans la propriété "valeur par défaut".
S'il n'y en a pas, je mets Null.
1 2 3 4 5 6 7 8 9 10 11 12
| Dim ctl As Access.Control
For Each ctl In Me.Section(acHeader).Controls
Select Case ctl.ControlType
Case acComboBox, acTextBox
If Len(ctl.DefaultValue) > 0 Then
ctl = Eval(ctl.DefaultValue)
Else
ctl = Null
End If
End Select
Next |
Mettre Null est important pour les zones de texte txtAge1 et txtAge2, ainsi que txtHeure1 et txtHeure2.
En effet elles sont sensées contenir des valeurs numériques ou date, ou ne rien contenir (Null).
Si tu affectes une chaîne vide (""), des lignes telles que
lgAge1 = Nz(Me.txtAge1, 0)
ou
dtHeure1 = Nz(Me.txtHeure1, #1/1/1900#)
vont générer une erreur d'incompatibilité de type de données, car on tente d'affecter une valeur de type String dans une variable de type Long ou Date.
Pour les zones de textes txtAge1 et txtAge2, on peut déjà mettre le masque de saisie 99; et le format à "Standard".
Ensuite dans l'événement "sur sortie" de txtAge1
1 2 3 4 5 6 7 8 9 10
| Private Sub txtAge1_Exit(Cancel As Integer)
If IsNumeric(Me.txtAge1) Then
Me.txtAge2.ValidationRule = ">[txtAge1]"
Me.txtAge2.ValidationText = "Entrez une valeur supérieure à " & CStr(Me.txtAge1)
Else
Me.txtAge2 = Null
Me.txtAge2.ValidationRule = "False"
Me.txtAge2.ValidationText = "Entrez un âge minimum"
End If
End Sub |
Je mets oeuvre, de cette manière, le contrôle de validité en le définissant dynamiquement.
j'ai fait un peu le même genre de formulaire, mais avec des onglets, et donc quand j'appuie sur le bouton Rechercher, ma requête ne s'affiche pas. Donc, j'aimerais que quand je clique sur ce bouton, un état ou un formulaire correspondant au résultat de ma requête s'affiche. Et je sais pas si c'est possible, mettre une sorte de graphique, ce genre de choses pour pas que ce ne soit qu'un tableau...
Je suis un peu perdu.
Qu'y a-t-il dans les onglets ?
Sinon, pour ouvrir un formulaire ou un état correspondant à tes critères de sélection, il faut créer un formulaire ou un état basé sur la même table Total.
Ensuite, tu ouvres le formulaire ou l'état en utilisant l'argument WhereCondition de DoCmd.OpenForm ou DoCmd.OpenReport.
Cet argument est identique au filtre de ton formulaire actuel (variable f).
La seule différence avec un filtre c'est que WhereCondition est appliqué en amont, directement à la source de données du formulaire ou de l'état.
Bon weekend.
Partager