critère par défaut à l'ouverture du formulaire de recherche CAFEINE
1 réponse
s.jean
Bonjour
J'utilise le formulaire de recherche multi crit=E8res qui est =E0
l'adresse suivante :
http://cafeine.developpez.com/access/tutoriel/recherchemulti/
Je l'ai r=E9alis=E9 il y a plusieurs ann=E9es et aucun probl=E8me, impeccabl=
e.
Aujourd'hui je souhaiterai qu'un des crit=E8res soit activ=E9 =E0
l'ouverture du formulaire.
J'ai une requ=EAte rqt_Commandes_non_archivees avec un champs Archive
de format oui/non. Actuellement =E0 l'ouverture tous les enregistrements
s'affichent. Je souhaiterai que seuls les enregistrements r=E9pondant =E0
non pour le crit=E8re Archive s'affichent, et laisser la possibilit=E9 de
d=E9cocher ce crit=E8re ou choisir oui.
J'ai essay=E9 le code suivant sachant que chkRechArchive est ma case =E0
cocher pour le crit=E8re Archive, mais =E0 partir du moment o=F9 je mets ce
code le filtre sur ce crit=E8re ne s'effectue plus ni =E0 l'ouverture, ni
si je change les crit=E8res :
Private Sub Form_Open(Cancel As Integer)
Me.chkRechArchive.SetFocus
Me.chkRechArchive =3D False
End Sub
Je mets ci-dessous l'int=E9gralit=E9 du code du formulaire, est ce que
quelqu'un aurait une id=E9e pour que je d=E9finisse un crit=E8re par d=E9fau=
t
et que le filtre continue de marcher ?
Merci beaucoup
Sandrine
-
Option Compare Database
Private Sub chkClient_Click()
Me.txtRechclient.Visible =3D Not Me.txtRechclient.Visible
RefreshQuery
End Sub
Private Sub chkCommande_Click()
Me.txtRechcommande.Visible =3D Not Me.txtRechcommande.Visible
RefreshQuery
End Sub
Private Sub chkRechfournisseur_Click()
Me.txtRechFournisseur.Visible =3D Not Me.txtRechFournisseur.Visible
RefreshQuery
End Sub
Private Sub chkRechArchive_Click()
Me.cmcRechArchive.Visible =3D Not Me.cmcRechArchive.Visible
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 =3D -1
Case "chb"
ctl.Value =3D 0
Case "lbl"
ctl.Caption =3D "- * - * -"
Case "txt"
ctl.Visible =3D False
ctl.Value =3D ""
Case "cmb"
ctl.Visible =3D False
End Select
Next ctl
Me.Liste20.RowSource =3D "SELECT CODE, COMMANDE, FOURNISSEUR,
COMMERCIAL, CLIENT, LivraisonClient, Expr1, ETD, ETA, [tbl
Commandes].Archive FROM rqt_Commandes_Non_Archivees ORDER BY
rqt_Commandes_Non_Archivees!Code DESC;"
Me.Liste20.Requery
End Sub
Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String
SQL =3D "SELECT CODE, COMMANDE, FOURNISSEUR, COMMERCIAL, CLIENT,
LivraisonClient, Expr1, ETD, ETA, [tbl Commandes].Archive FROM
rqt_Commandes_Non_Archivees Where rqt_Commandes_Non_Archivees!CODE <>
0"
If Not Me.chkclient Then
SQL =3D SQL & "AND rqt_Commandes_Non_Archivees!CLIENT like '*" &
Me.txtRechclient & "*' "
End If
If Not Me.chkcommande Then
SQL =3D SQL & "AND rqt_Commandes_Non_Archivees!COMMANDE like '*" &
Me.txtRechcommande & "*' "
End If
If Not Me.chkRechFournisseur Then
SQL =3D SQL & "AND rqt_Commandes_Non_Archivees!FOURNISSEUR like '*" &
Me.txtRechFournisseur & "*' "
End If
If Not Me.chkRechArchive Then
SQL =3D SQL & "AND rqt_Commandes_Non_Archivees![tbl Commandes].Archive
like '*" & Me.cmcRechArchive & "*' "
End If
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
3stone
Salut,
Dans ton code, tu crées simplement une requête "en dur" et sans tenir compte des sélections...
Il est plus intéressant de ne construire la clause Where que sur les controles qui ont été sélectionnés.
Ici, il y a un exemple pour la création d'un filtre de formulaire : http://www.3stone.be/access/articles.php?lng=fr&pgC le principe pour une requête reste le même...
Donc, pour une liste ou une zone de texte, on l'inclus uniquement si non Null, pour les case à cocher, on inclus toujours...
PS: developpez.com à un forum pour les précisions sur le code puisé ;-)
"s.jean" J'utilise le formulaire de recherche multi critères qui est à l'adresse suivante : http://cafeine.developpez.com/access/tutoriel/recherchemulti/
Je l'ai réalisé il y a plusieurs années et aucun problème, impeccable.
Aujourd'hui je souhaiterai qu'un des critères soit activé à l'ouverture du formulaire.
J'ai une requête rqt_Commandes_non_archivees avec un champs Archive de format oui/non. Actuellement à l'ouverture tous les enregistrements s'affichent. Je souhaiterai que seuls les enregistrements répondant à non pour le critère Archive s'affichent, et laisser la possibilité de décocher ce critère ou choisir oui.
J'ai essayé le code suivant sachant que chkRechArchive est ma case à cocher pour le critère Archive, mais à partir du moment où je mets ce code le filtre sur ce critère ne s'effectue plus ni à l'ouverture, ni si je change les critères :
Private Sub Form_Open(Cancel As Integer) Me.chkRechArchive.SetFocus Me.chkRechArchive = False End Sub
Je mets ci-dessous l'intégralité du code du formulaire, est ce que quelqu'un aurait une idée pour que je définisse un critère par défaut et que le filtre continue de marcher ?
Merci beaucoup Sandrine -
Option Compare Database Private Sub chkClient_Click() Me.txtRechclient.Visible = Not Me.txtRechclient.Visible RefreshQuery End Sub
Private Sub chkCommande_Click() Me.txtRechcommande.Visible = Not Me.txtRechcommande.Visible RefreshQuery End Sub
Private Sub chkRechfournisseur_Click() Me.txtRechFournisseur.Visible = Not Me.txtRechFournisseur.Visible RefreshQuery End Sub
Private Sub chkRechArchive_Click() Me.cmcRechArchive.Visible = Not Me.cmcRechArchive.Visible 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 "chb" ctl.Value = 0
Case "lbl" ctl.Caption = "- * - * -"
Case "txt" ctl.Visible = False ctl.Value = ""
Case "cmb" ctl.Visible = False
End Select Next ctl
Me.Liste20.RowSource = "SELECT CODE, COMMANDE, FOURNISSEUR, COMMERCIAL, CLIENT, LivraisonClient, Expr1, ETD, ETA, [tbl Commandes].Archive FROM rqt_Commandes_Non_Archivees ORDER BY rqt_Commandes_Non_Archivees!Code DESC;" Me.Liste20.Requery End Sub
Private Sub RefreshQuery() Dim SQL As String Dim SQLWhere As String
SQL = "SELECT CODE, COMMANDE, FOURNISSEUR, COMMERCIAL, CLIENT, LivraisonClient, Expr1, ETD, ETA, [tbl Commandes].Archive FROM rqt_Commandes_Non_Archivees Where rqt_Commandes_Non_Archivees!CODE <> 0"
If Not Me.chkclient Then SQL = SQL & "AND rqt_Commandes_Non_Archivees!CLIENT like '*" & Me.txtRechclient & "*' " End If
If Not Me.chkcommande Then SQL = SQL & "AND rqt_Commandes_Non_Archivees!COMMANDE like '*" & Me.txtRechcommande & "*' " End If
If Not Me.chkRechFournisseur Then SQL = SQL & "AND rqt_Commandes_Non_Archivees!FOURNISSEUR like '*" & Me.txtRechFournisseur & "*' " End If
If Not Me.chkRechArchive Then SQL = SQL & "AND rqt_Commandes_Non_Archivees![tbl Commandes].Archive like '*" & Me.cmcRechArchive & "*' " End If
Private Sub Form_Open(Cancel As Integer) Me.chkRechArchive.SetFocus Me.chkRechArchive = False End Sub
Private Sub txtRechcommande_BeforeUpdate(Cancel As Integer) RefreshQuery End Sub
Private Sub txtRechclient_BeforeUpdate(Cancel As Integer) RefreshQuery End Sub
Private Sub txtRechfournisseur_BeforeUpdate(Cancel As Integer) RefreshQuery End Sub
Private Sub cmcRechArchive_BeforeUpdate(Cancel As Integer) RefreshQuery End Sub
Private Sub Liste20_DblClick(Cancel As Integer) DoCmd.OpenForm "frmCommandes", acNormal, , "[CODE] = " & Me.Liste20 End Sub
Salut,
Dans ton code, tu crées simplement une requête "en dur" et
sans tenir compte des sélections...
Il est plus intéressant de ne construire la clause Where que sur
les controles qui ont été sélectionnés.
Ici, il y a un exemple pour la création d'un filtre de formulaire :
http://www.3stone.be/access/articles.php?lng=fr&pgC
le principe pour une requête reste le même...
Donc, pour une liste ou une zone de texte, on l'inclus uniquement
si non Null, pour les case à cocher, on inclus toujours...
PS:
developpez.com à un forum pour les précisions sur le code puisé ;-)
"s.jean"
J'utilise le formulaire de recherche multi critères qui est à
l'adresse suivante :
http://cafeine.developpez.com/access/tutoriel/recherchemulti/
Je l'ai réalisé il y a plusieurs années et aucun problème, impeccable.
Aujourd'hui je souhaiterai qu'un des critères soit activé à
l'ouverture du formulaire.
J'ai une requête rqt_Commandes_non_archivees avec un champs Archive
de format oui/non. Actuellement à l'ouverture tous les enregistrements
s'affichent. Je souhaiterai que seuls les enregistrements répondant à
non pour le critère Archive s'affichent, et laisser la possibilité de
décocher ce critère ou choisir oui.
J'ai essayé le code suivant sachant que chkRechArchive est ma case à
cocher pour le critère Archive, mais à partir du moment où je mets ce
code le filtre sur ce critère ne s'effectue plus ni à l'ouverture, ni
si je change les critères :
Private Sub Form_Open(Cancel As Integer)
Me.chkRechArchive.SetFocus
Me.chkRechArchive = False
End Sub
Je mets ci-dessous l'intégralité du code du formulaire, est ce que
quelqu'un aurait une idée pour que je définisse un critère par défaut
et que le filtre continue de marcher ?
Merci beaucoup
Sandrine
-
Option Compare Database
Private Sub chkClient_Click()
Me.txtRechclient.Visible = Not Me.txtRechclient.Visible
RefreshQuery
End Sub
Private Sub chkCommande_Click()
Me.txtRechcommande.Visible = Not Me.txtRechcommande.Visible
RefreshQuery
End Sub
Private Sub chkRechfournisseur_Click()
Me.txtRechFournisseur.Visible = Not Me.txtRechFournisseur.Visible
RefreshQuery
End Sub
Private Sub chkRechArchive_Click()
Me.cmcRechArchive.Visible = Not Me.cmcRechArchive.Visible
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 "chb"
ctl.Value = 0
Case "lbl"
ctl.Caption = "- * - * -"
Case "txt"
ctl.Visible = False
ctl.Value = ""
Case "cmb"
ctl.Visible = False
End Select
Next ctl
Me.Liste20.RowSource = "SELECT CODE, COMMANDE, FOURNISSEUR,
COMMERCIAL, CLIENT, LivraisonClient, Expr1, ETD, ETA, [tbl
Commandes].Archive FROM rqt_Commandes_Non_Archivees ORDER BY
rqt_Commandes_Non_Archivees!Code DESC;"
Me.Liste20.Requery
End Sub
Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String
SQL = "SELECT CODE, COMMANDE, FOURNISSEUR, COMMERCIAL, CLIENT,
LivraisonClient, Expr1, ETD, ETA, [tbl Commandes].Archive FROM
rqt_Commandes_Non_Archivees Where rqt_Commandes_Non_Archivees!CODE <>
0"
If Not Me.chkclient Then
SQL = SQL & "AND rqt_Commandes_Non_Archivees!CLIENT like '*" &
Me.txtRechclient & "*' "
End If
If Not Me.chkcommande Then
SQL = SQL & "AND rqt_Commandes_Non_Archivees!COMMANDE like '*" &
Me.txtRechcommande & "*' "
End If
If Not Me.chkRechFournisseur Then
SQL = SQL & "AND rqt_Commandes_Non_Archivees!FOURNISSEUR like '*" &
Me.txtRechFournisseur & "*' "
End If
If Not Me.chkRechArchive Then
SQL = SQL & "AND rqt_Commandes_Non_Archivees![tbl Commandes].Archive
like '*" & Me.cmcRechArchive & "*' "
End If
Dans ton code, tu crées simplement une requête "en dur" et sans tenir compte des sélections...
Il est plus intéressant de ne construire la clause Where que sur les controles qui ont été sélectionnés.
Ici, il y a un exemple pour la création d'un filtre de formulaire : http://www.3stone.be/access/articles.php?lng=fr&pgC le principe pour une requête reste le même...
Donc, pour une liste ou une zone de texte, on l'inclus uniquement si non Null, pour les case à cocher, on inclus toujours...
PS: developpez.com à un forum pour les précisions sur le code puisé ;-)
"s.jean" J'utilise le formulaire de recherche multi critères qui est à l'adresse suivante : http://cafeine.developpez.com/access/tutoriel/recherchemulti/
Je l'ai réalisé il y a plusieurs années et aucun problème, impeccable.
Aujourd'hui je souhaiterai qu'un des critères soit activé à l'ouverture du formulaire.
J'ai une requête rqt_Commandes_non_archivees avec un champs Archive de format oui/non. Actuellement à l'ouverture tous les enregistrements s'affichent. Je souhaiterai que seuls les enregistrements répondant à non pour le critère Archive s'affichent, et laisser la possibilité de décocher ce critère ou choisir oui.
J'ai essayé le code suivant sachant que chkRechArchive est ma case à cocher pour le critère Archive, mais à partir du moment où je mets ce code le filtre sur ce critère ne s'effectue plus ni à l'ouverture, ni si je change les critères :
Private Sub Form_Open(Cancel As Integer) Me.chkRechArchive.SetFocus Me.chkRechArchive = False End Sub
Je mets ci-dessous l'intégralité du code du formulaire, est ce que quelqu'un aurait une idée pour que je définisse un critère par défaut et que le filtre continue de marcher ?
Merci beaucoup Sandrine -
Option Compare Database Private Sub chkClient_Click() Me.txtRechclient.Visible = Not Me.txtRechclient.Visible RefreshQuery End Sub
Private Sub chkCommande_Click() Me.txtRechcommande.Visible = Not Me.txtRechcommande.Visible RefreshQuery End Sub
Private Sub chkRechfournisseur_Click() Me.txtRechFournisseur.Visible = Not Me.txtRechFournisseur.Visible RefreshQuery End Sub
Private Sub chkRechArchive_Click() Me.cmcRechArchive.Visible = Not Me.cmcRechArchive.Visible 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 "chb" ctl.Value = 0
Case "lbl" ctl.Caption = "- * - * -"
Case "txt" ctl.Visible = False ctl.Value = ""
Case "cmb" ctl.Visible = False
End Select Next ctl
Me.Liste20.RowSource = "SELECT CODE, COMMANDE, FOURNISSEUR, COMMERCIAL, CLIENT, LivraisonClient, Expr1, ETD, ETA, [tbl Commandes].Archive FROM rqt_Commandes_Non_Archivees ORDER BY rqt_Commandes_Non_Archivees!Code DESC;" Me.Liste20.Requery End Sub
Private Sub RefreshQuery() Dim SQL As String Dim SQLWhere As String
SQL = "SELECT CODE, COMMANDE, FOURNISSEUR, COMMERCIAL, CLIENT, LivraisonClient, Expr1, ETD, ETA, [tbl Commandes].Archive FROM rqt_Commandes_Non_Archivees Where rqt_Commandes_Non_Archivees!CODE <> 0"
If Not Me.chkclient Then SQL = SQL & "AND rqt_Commandes_Non_Archivees!CLIENT like '*" & Me.txtRechclient & "*' " End If
If Not Me.chkcommande Then SQL = SQL & "AND rqt_Commandes_Non_Archivees!COMMANDE like '*" & Me.txtRechcommande & "*' " End If
If Not Me.chkRechFournisseur Then SQL = SQL & "AND rqt_Commandes_Non_Archivees!FOURNISSEUR like '*" & Me.txtRechFournisseur & "*' " End If
If Not Me.chkRechArchive Then SQL = SQL & "AND rqt_Commandes_Non_Archivees![tbl Commandes].Archive like '*" & Me.cmcRechArchive & "*' " End If