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
Eric
Bonjour fth,
Ne sachant comment est remplie la liste ...
En supposant que la propriété Contenu de la liste est une instruction SQL qui se termine par un point-virgule, sans clause de regroupement ni Order by, tu peux faire:
1-Dans la partie déclarative du module de formulaire, sous Option Compare Database et Option Explicit, tu déclares 2 variables: Dim OldSQL as string, NewSQL as string
2-Sur Ouverture du formulaire ou sur chargement: Private Sub form_open(cancel As integer) 'ou Form_load() OldSQL=LaListe.RowSource End sub
3- Adaptation du code du Toggle '------------------------------------ Select Case BtQuickFilter case 1 NewSQL=OldSQL Me.Filterúlse Case 2,3,4 Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'" NewSQL=NewSQL & " WHERE " & Me.Filter & ";" Me.FilterOn=True End Select me.LaListe.rowsource = NewSQL me.LaListe.requery '------------------------------------
Sur l'évènement UnLoad du formulaire, tu remets le SQL initial de la liste: MeLaListe.Rowsource= OldSQL
Juste une idée qui devrait, sous les conditions mentionnées, marcher. Pas tester. (Serai absent toute l'après-midi)
Bonjour Ma Form dispose d'un Toggle bouton à plusieurs positions afin de filtrer certaines données:
Select Case BtQuickFilter
Case Is = 1: Me.FilterOn = False Me.Filter = "" Me.FilterOn = True
Case Is = 2: Me.FilterOn = False Me.Filter = "Type ='R'" Me.FilterOn = True
Case Is = 3: Me.FilterOn = False Me.Filter = "Type='S'" Me.FilterOn = True
Case Is = 4: Me.FilterOn = False Me.Filter = "Type='V'" Me.FilterOn = True
End Select
Il y a aussi dans ma Form un DropDownList qui me permet de sélectionner un record précis.
Comment dois-je m'y prendre pour que la DropDownList n'affiches QUE les records résultant du filrte en cours?
D'avance merci
Frédéric
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour fth,
Ne sachant comment est remplie la liste ...
En supposant que la propriété Contenu de la liste est une instruction
SQL qui se termine par un point-virgule, sans clause de regroupement ni
Order by, tu peux faire:
1-Dans la partie déclarative du module de formulaire, sous Option
Compare Database et Option Explicit, tu déclares 2 variables:
Dim OldSQL as string, NewSQL as string
2-Sur Ouverture du formulaire ou sur chargement:
Private Sub form_open(cancel As integer) 'ou Form_load()
OldSQL=LaListe.RowSource
End sub
3- Adaptation du code du Toggle
'------------------------------------
Select Case BtQuickFilter
case 1
NewSQL=OldSQL
Me.Filterúlse
Case 2,3,4
Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'"
NewSQL=NewSQL & " WHERE " & Me.Filter & ";"
Me.FilterOn=True
End Select
me.LaListe.rowsource = NewSQL
me.LaListe.requery
'------------------------------------
Sur l'évènement UnLoad du formulaire, tu remets le SQL initial de la liste:
MeLaListe.Rowsource= OldSQL
Juste une idée qui devrait, sous les conditions mentionnées, marcher.
Pas tester. (Serai absent toute l'après-midi)
Bonjour
Ma Form dispose d'un Toggle bouton à plusieurs positions afin de filtrer
certaines données:
Select Case BtQuickFilter
Case Is = 1:
Me.FilterOn = False
Me.Filter = ""
Me.FilterOn = True
Case Is = 2:
Me.FilterOn = False
Me.Filter = "Type ='R'"
Me.FilterOn = True
Case Is = 3:
Me.FilterOn = False
Me.Filter = "Type='S'"
Me.FilterOn = True
Case Is = 4:
Me.FilterOn = False
Me.Filter = "Type='V'"
Me.FilterOn = True
End Select
Il y a aussi dans ma Form un DropDownList qui me permet de sélectionner un
record précis.
Comment dois-je m'y prendre pour que la DropDownList n'affiches QUE les
records résultant du filrte en cours?
D'avance merci
Frédéric
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
En supposant que la propriété Contenu de la liste est une instruction SQL qui se termine par un point-virgule, sans clause de regroupement ni Order by, tu peux faire:
1-Dans la partie déclarative du module de formulaire, sous Option Compare Database et Option Explicit, tu déclares 2 variables: Dim OldSQL as string, NewSQL as string
2-Sur Ouverture du formulaire ou sur chargement: Private Sub form_open(cancel As integer) 'ou Form_load() OldSQL=LaListe.RowSource End sub
3- Adaptation du code du Toggle '------------------------------------ Select Case BtQuickFilter case 1 NewSQL=OldSQL Me.Filterúlse Case 2,3,4 Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'" NewSQL=NewSQL & " WHERE " & Me.Filter & ";" Me.FilterOn=True End Select me.LaListe.rowsource = NewSQL me.LaListe.requery '------------------------------------
Sur l'évènement UnLoad du formulaire, tu remets le SQL initial de la liste: MeLaListe.Rowsource= OldSQL
Juste une idée qui devrait, sous les conditions mentionnées, marcher. Pas tester. (Serai absent toute l'après-midi)
Bonjour Ma Form dispose d'un Toggle bouton à plusieurs positions afin de filtrer certaines données:
Select Case BtQuickFilter
Case Is = 1: Me.FilterOn = False Me.Filter = "" Me.FilterOn = True
Case Is = 2: Me.FilterOn = False Me.Filter = "Type ='R'" Me.FilterOn = True
Case Is = 3: Me.FilterOn = False Me.Filter = "Type='S'" Me.FilterOn = True
Case Is = 4: Me.FilterOn = False Me.Filter = "Type='V'" Me.FilterOn = True
End Select
Il y a aussi dans ma Form un DropDownList qui me permet de sélectionner un record précis.
Comment dois-je m'y prendre pour que la DropDownList n'affiches QUE les records résultant du filrte en cours?
D'avance merci
Frédéric
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
fth
Oups, me suis sans doute mal exprimé.. ou alors, j'ai pas compris. Donc: le formulaire s'ouvre par défaut sur l'option 1 (la liste sans filtre) les autres toggle fonctionne parfaitement.
Le soucis est pour le comboBox:
par défaut: Row Source type: table/query row source:SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE (((Q_Srv.Srvname) Is Not Null)) ORDER BY Q_Srv.Srvname;
l'idéal serait que lorsque je filtre par exemple sur "R", la row source du ComboBox devienne: SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE (((Q_Srv.Srvname) Is Not Null) AND ((Q_Srv.Type)="R")) ORDER BY Q_Srv.Srvname; Ce qui aurait pour conséquence d'avoir une liste dans le ComboBox correspondant au filtre appliqué au formulaire.
Merci pou rvos pistes et vos idées,
Frédéric
"Eric" wrote:
Bonjour fth,
Ne sachant comment est remplie la liste ...
En supposant que la propriété Contenu de la liste est une instruction SQL qui se termine par un point-virgule, sans clause de regroupement ni Order by, tu peux faire:
1-Dans la partie déclarative du module de formulaire, sous Option Compare Database et Option Explicit, tu déclares 2 variables: Dim OldSQL as string, NewSQL as string
2-Sur Ouverture du formulaire ou sur chargement: Private Sub form_open(cancel As integer) 'ou Form_load() OldSQL=LaListe.RowSource End sub
3- Adaptation du code du Toggle '------------------------------------ Select Case BtQuickFilter case 1 NewSQL=OldSQL Me.Filterúlse Case 2,3,4 Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'" NewSQL=NewSQL & " WHERE " & Me.Filter & ";" Me.FilterOn=True End Select me.LaListe.rowsource = NewSQL me.LaListe.requery '------------------------------------
Sur l'évènement UnLoad du formulaire, tu remets le SQL initial de la liste: MeLaListe.Rowsource= OldSQL
Juste une idée qui devrait, sous les conditions mentionnées, marcher. Pas tester. (Serai absent toute l'après-midi)
Bonjour Ma Form dispose d'un Toggle bouton à plusieurs positions afin de filtrer certaines données:
Select Case BtQuickFilter
Case Is = 1: Me.FilterOn = False Me.Filter = "" Me.FilterOn = True
Case Is = 2: Me.FilterOn = False Me.Filter = "Type ='R'" Me.FilterOn = True
Case Is = 3: Me.FilterOn = False Me.Filter = "Type='S'" Me.FilterOn = True
Case Is = 4: Me.FilterOn = False Me.Filter = "Type='V'" Me.FilterOn = True
End Select
Il y a aussi dans ma Form un DropDownList qui me permet de sélectionner un record précis.
Comment dois-je m'y prendre pour que la DropDownList n'affiches QUE les records résultant du filrte en cours?
D'avance merci
Frédéric
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Oups, me suis sans doute mal exprimé.. ou alors, j'ai pas compris.
Donc:
le formulaire s'ouvre par défaut sur l'option 1 (la liste sans filtre)
les autres toggle fonctionne parfaitement.
Le soucis est pour le comboBox:
par défaut:
Row Source type: table/query
row source:SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE
(((Q_Srv.Srvname) Is Not Null)) ORDER BY Q_Srv.Srvname;
l'idéal serait que lorsque je filtre par exemple sur "R", la row source du
ComboBox devienne:
SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE
(((Q_Srv.Srvname) Is Not Null) AND ((Q_Srv.Type)="R")) ORDER BY
Q_Srv.Srvname;
Ce qui aurait pour conséquence d'avoir une liste dans le ComboBox
correspondant au filtre appliqué au formulaire.
Merci pou rvos pistes et vos idées,
Frédéric
"Eric" wrote:
Bonjour fth,
Ne sachant comment est remplie la liste ...
En supposant que la propriété Contenu de la liste est une instruction
SQL qui se termine par un point-virgule, sans clause de regroupement ni
Order by, tu peux faire:
1-Dans la partie déclarative du module de formulaire, sous Option
Compare Database et Option Explicit, tu déclares 2 variables:
Dim OldSQL as string, NewSQL as string
2-Sur Ouverture du formulaire ou sur chargement:
Private Sub form_open(cancel As integer) 'ou Form_load()
OldSQL=LaListe.RowSource
End sub
3- Adaptation du code du Toggle
'------------------------------------
Select Case BtQuickFilter
case 1
NewSQL=OldSQL
Me.Filterúlse
Case 2,3,4
Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'"
NewSQL=NewSQL & " WHERE " & Me.Filter & ";"
Me.FilterOn=True
End Select
me.LaListe.rowsource = NewSQL
me.LaListe.requery
'------------------------------------
Sur l'évènement UnLoad du formulaire, tu remets le SQL initial de la liste:
MeLaListe.Rowsource= OldSQL
Juste une idée qui devrait, sous les conditions mentionnées, marcher.
Pas tester. (Serai absent toute l'après-midi)
Bonjour
Ma Form dispose d'un Toggle bouton à plusieurs positions afin de filtrer
certaines données:
Select Case BtQuickFilter
Case Is = 1:
Me.FilterOn = False
Me.Filter = ""
Me.FilterOn = True
Case Is = 2:
Me.FilterOn = False
Me.Filter = "Type ='R'"
Me.FilterOn = True
Case Is = 3:
Me.FilterOn = False
Me.Filter = "Type='S'"
Me.FilterOn = True
Case Is = 4:
Me.FilterOn = False
Me.Filter = "Type='V'"
Me.FilterOn = True
End Select
Il y a aussi dans ma Form un DropDownList qui me permet de sélectionner un
record précis.
Comment dois-je m'y prendre pour que la DropDownList n'affiches QUE les
records résultant du filrte en cours?
D'avance merci
Frédéric
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Oups, me suis sans doute mal exprimé.. ou alors, j'ai pas compris. Donc: le formulaire s'ouvre par défaut sur l'option 1 (la liste sans filtre) les autres toggle fonctionne parfaitement.
Le soucis est pour le comboBox:
par défaut: Row Source type: table/query row source:SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE (((Q_Srv.Srvname) Is Not Null)) ORDER BY Q_Srv.Srvname;
l'idéal serait que lorsque je filtre par exemple sur "R", la row source du ComboBox devienne: SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE (((Q_Srv.Srvname) Is Not Null) AND ((Q_Srv.Type)="R")) ORDER BY Q_Srv.Srvname; Ce qui aurait pour conséquence d'avoir une liste dans le ComboBox correspondant au filtre appliqué au formulaire.
Merci pou rvos pistes et vos idées,
Frédéric
"Eric" wrote:
Bonjour fth,
Ne sachant comment est remplie la liste ...
En supposant que la propriété Contenu de la liste est une instruction SQL qui se termine par un point-virgule, sans clause de regroupement ni Order by, tu peux faire:
1-Dans la partie déclarative du module de formulaire, sous Option Compare Database et Option Explicit, tu déclares 2 variables: Dim OldSQL as string, NewSQL as string
2-Sur Ouverture du formulaire ou sur chargement: Private Sub form_open(cancel As integer) 'ou Form_load() OldSQL=LaListe.RowSource End sub
3- Adaptation du code du Toggle '------------------------------------ Select Case BtQuickFilter case 1 NewSQL=OldSQL Me.Filterúlse Case 2,3,4 Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'" NewSQL=NewSQL & " WHERE " & Me.Filter & ";" Me.FilterOn=True End Select me.LaListe.rowsource = NewSQL me.LaListe.requery '------------------------------------
Sur l'évènement UnLoad du formulaire, tu remets le SQL initial de la liste: MeLaListe.Rowsource= OldSQL
Juste une idée qui devrait, sous les conditions mentionnées, marcher. Pas tester. (Serai absent toute l'après-midi)
Bonjour Ma Form dispose d'un Toggle bouton à plusieurs positions afin de filtrer certaines données:
Select Case BtQuickFilter
Case Is = 1: Me.FilterOn = False Me.Filter = "" Me.FilterOn = True
Case Is = 2: Me.FilterOn = False Me.Filter = "Type ='R'" Me.FilterOn = True
Case Is = 3: Me.FilterOn = False Me.Filter = "Type='S'" Me.FilterOn = True
Case Is = 4: Me.FilterOn = False Me.Filter = "Type='V'" Me.FilterOn = True
End Select
Il y a aussi dans ma Form un DropDownList qui me permet de sélectionner un record précis.
Comment dois-je m'y prendre pour que la DropDownList n'affiches QUE les records résultant du filrte en cours?
D'avance merci
Frédéric
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
Bonsoir,
Je précisais juste que je ne savais pas si la rowsource de ta liste était une requête enregistrée ou une instruction SQL.
Dans ton cas, il s'agit d'une instruction SQL. La table Q_Srv contient le champ Type. Il faut décomposer ton SQL pour extraire momantanément la clause Order By, mettre le critere supplémentaire et rajouter le Order by après. {Les parenthèses d'Access sont pénibles}.
A mon avis, juste le Case 2,3,4 doit être modifié comme suit: Case 2,3,4 position = InStr(OldChaine, "Order By") NewSQL = left(OldSQL, position) Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'" NewSQL=NewSQL & " And " & Me.Filter & " " & Mid(OldSQL, position) Me.FilterOn=True End Select
Par contre, au début de ta procédure, tu déclares position par Dim position as Long
Oups, me suis sans doute mal exprimé.. ou alors, j'ai pas compris. Donc: le formulaire s'ouvre par défaut sur l'option 1 (la liste sans filtre) les autres toggle fonctionne parfaitement.
Le soucis est pour le comboBox:
par défaut: Row Source type: table/query row source:SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE (((Q_Srv.Srvname) Is Not Null)) ORDER BY Q_Srv.Srvname;
l'idéal serait que lorsque je filtre par exemple sur "R", la row source du ComboBox devienne: SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE (((Q_Srv.Srvname) Is Not Null) AND ((Q_Srv.Type)="R")) ORDER BY Q_Srv.Srvname; Ce qui aurait pour conséquence d'avoir une liste dans le ComboBox correspondant au filtre appliqué au formulaire.
Merci pou rvos pistes et vos idées,
Frédéric
"Eric" wrote:
Bonjour fth,
Ne sachant comment est remplie la liste ...
En supposant que la propriété Contenu de la liste est une instruction SQL qui se termine par un point-virgule, sans clause de regroupement ni Order by, tu peux faire:
1-Dans la partie déclarative du module de formulaire, sous Option Compare Database et Option Explicit, tu déclares 2 variables: Dim OldSQL as string, NewSQL as string
2-Sur Ouverture du formulaire ou sur chargement: Private Sub form_open(cancel As integer) 'ou Form_load() OldSQL=LaListe.RowSource End sub
3- Adaptation du code du Toggle '------------------------------------ Select Case BtQuickFilter case 1 NewSQL=OldSQL Me.Filterúlse Case 2,3,4 Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'" NewSQL=NewSQL & " WHERE " & Me.Filter & ";" Me.FilterOn=True End Select me.LaListe.rowsource = NewSQL me.LaListe.requery '------------------------------------
Sur l'évènement UnLoad du formulaire, tu remets le SQL initial de la liste: MeLaListe.Rowsource= OldSQL
Juste une idée qui devrait, sous les conditions mentionnées, marcher. Pas tester. (Serai absent toute l'après-midi)
Bonjour Ma Form dispose d'un Toggle bouton à plusieurs positions afin de filtrer certaines données:
Select Case BtQuickFilter
Case Is = 1: Me.FilterOn = False Me.Filter = "" Me.FilterOn = True
Case Is = 2: Me.FilterOn = False Me.Filter = "Type ='R'" Me.FilterOn = True
Case Is = 3: Me.FilterOn = False Me.Filter = "Type='S'" Me.FilterOn = True
Case Is = 4: Me.FilterOn = False Me.Filter = "Type='V'" Me.FilterOn = True
End Select
Il y a aussi dans ma Form un DropDownList qui me permet de sélectionner un record précis.
Comment dois-je m'y prendre pour que la DropDownList n'affiches QUE les records résultant du filrte en cours?
D'avance merci
Frédéric
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir,
Je précisais juste que je ne savais pas si la rowsource de ta liste
était une requête enregistrée ou une instruction SQL.
Dans ton cas, il s'agit d'une instruction SQL. La table Q_Srv contient
le champ Type. Il faut décomposer ton SQL pour extraire momantanément la
clause Order By, mettre le critere supplémentaire et rajouter le Order
by après. {Les parenthèses d'Access sont pénibles}.
A mon avis, juste le Case 2,3,4 doit être modifié comme suit:
Case 2,3,4
position = InStr(OldChaine, "Order By")
NewSQL = left(OldSQL, position)
Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'"
NewSQL=NewSQL & " And " & Me.Filter & " " & Mid(OldSQL, position)
Me.FilterOn=True
End Select
Par contre, au début de ta procédure, tu déclares position par
Dim position as Long
Oups, me suis sans doute mal exprimé.. ou alors, j'ai pas compris.
Donc:
le formulaire s'ouvre par défaut sur l'option 1 (la liste sans filtre)
les autres toggle fonctionne parfaitement.
Le soucis est pour le comboBox:
par défaut:
Row Source type: table/query
row source:SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE
(((Q_Srv.Srvname) Is Not Null)) ORDER BY Q_Srv.Srvname;
l'idéal serait que lorsque je filtre par exemple sur "R", la row source du
ComboBox devienne:
SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE
(((Q_Srv.Srvname) Is Not Null) AND ((Q_Srv.Type)="R")) ORDER BY
Q_Srv.Srvname;
Ce qui aurait pour conséquence d'avoir une liste dans le ComboBox
correspondant au filtre appliqué au formulaire.
Merci pou rvos pistes et vos idées,
Frédéric
"Eric" wrote:
Bonjour fth,
Ne sachant comment est remplie la liste ...
En supposant que la propriété Contenu de la liste est une instruction
SQL qui se termine par un point-virgule, sans clause de regroupement ni
Order by, tu peux faire:
1-Dans la partie déclarative du module de formulaire, sous Option
Compare Database et Option Explicit, tu déclares 2 variables:
Dim OldSQL as string, NewSQL as string
2-Sur Ouverture du formulaire ou sur chargement:
Private Sub form_open(cancel As integer) 'ou Form_load()
OldSQL=LaListe.RowSource
End sub
3- Adaptation du code du Toggle
'------------------------------------
Select Case BtQuickFilter
case 1
NewSQL=OldSQL
Me.Filterúlse
Case 2,3,4
Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'"
NewSQL=NewSQL & " WHERE " & Me.Filter & ";"
Me.FilterOn=True
End Select
me.LaListe.rowsource = NewSQL
me.LaListe.requery
'------------------------------------
Sur l'évènement UnLoad du formulaire, tu remets le SQL initial de la liste:
MeLaListe.Rowsource= OldSQL
Juste une idée qui devrait, sous les conditions mentionnées, marcher.
Pas tester. (Serai absent toute l'après-midi)
Bonjour
Ma Form dispose d'un Toggle bouton à plusieurs positions afin de filtrer
certaines données:
Select Case BtQuickFilter
Case Is = 1:
Me.FilterOn = False
Me.Filter = ""
Me.FilterOn = True
Case Is = 2:
Me.FilterOn = False
Me.Filter = "Type ='R'"
Me.FilterOn = True
Case Is = 3:
Me.FilterOn = False
Me.Filter = "Type='S'"
Me.FilterOn = True
Case Is = 4:
Me.FilterOn = False
Me.Filter = "Type='V'"
Me.FilterOn = True
End Select
Il y a aussi dans ma Form un DropDownList qui me permet de sélectionner un
record précis.
Comment dois-je m'y prendre pour que la DropDownList n'affiches QUE les
records résultant du filrte en cours?
D'avance merci
Frédéric
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Je précisais juste que je ne savais pas si la rowsource de ta liste était une requête enregistrée ou une instruction SQL.
Dans ton cas, il s'agit d'une instruction SQL. La table Q_Srv contient le champ Type. Il faut décomposer ton SQL pour extraire momantanément la clause Order By, mettre le critere supplémentaire et rajouter le Order by après. {Les parenthèses d'Access sont pénibles}.
A mon avis, juste le Case 2,3,4 doit être modifié comme suit: Case 2,3,4 position = InStr(OldChaine, "Order By") NewSQL = left(OldSQL, position) Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'" NewSQL=NewSQL & " And " & Me.Filter & " " & Mid(OldSQL, position) Me.FilterOn=True End Select
Par contre, au début de ta procédure, tu déclares position par Dim position as Long
Oups, me suis sans doute mal exprimé.. ou alors, j'ai pas compris. Donc: le formulaire s'ouvre par défaut sur l'option 1 (la liste sans filtre) les autres toggle fonctionne parfaitement.
Le soucis est pour le comboBox:
par défaut: Row Source type: table/query row source:SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE (((Q_Srv.Srvname) Is Not Null)) ORDER BY Q_Srv.Srvname;
l'idéal serait que lorsque je filtre par exemple sur "R", la row source du ComboBox devienne: SELECT Q_Srv.Srvname, Q_Srv.Type, Q_Srv.SrvClass FROM Q_Srv WHERE (((Q_Srv.Srvname) Is Not Null) AND ((Q_Srv.Type)="R")) ORDER BY Q_Srv.Srvname; Ce qui aurait pour conséquence d'avoir une liste dans le ComboBox correspondant au filtre appliqué au formulaire.
Merci pou rvos pistes et vos idées,
Frédéric
"Eric" wrote:
Bonjour fth,
Ne sachant comment est remplie la liste ...
En supposant que la propriété Contenu de la liste est une instruction SQL qui se termine par un point-virgule, sans clause de regroupement ni Order by, tu peux faire:
1-Dans la partie déclarative du module de formulaire, sous Option Compare Database et Option Explicit, tu déclares 2 variables: Dim OldSQL as string, NewSQL as string
2-Sur Ouverture du formulaire ou sur chargement: Private Sub form_open(cancel As integer) 'ou Form_load() OldSQL=LaListe.RowSource End sub
3- Adaptation du code du Toggle '------------------------------------ Select Case BtQuickFilter case 1 NewSQL=OldSQL Me.Filterúlse Case 2,3,4 Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'" NewSQL=NewSQL & " WHERE " & Me.Filter & ";" Me.FilterOn=True End Select me.LaListe.rowsource = NewSQL me.LaListe.requery '------------------------------------
Sur l'évènement UnLoad du formulaire, tu remets le SQL initial de la liste: MeLaListe.Rowsource= OldSQL
Juste une idée qui devrait, sous les conditions mentionnées, marcher. Pas tester. (Serai absent toute l'après-midi)
Bonjour Ma Form dispose d'un Toggle bouton à plusieurs positions afin de filtrer certaines données:
Select Case BtQuickFilter
Case Is = 1: Me.FilterOn = False Me.Filter = "" Me.FilterOn = True
Case Is = 2: Me.FilterOn = False Me.Filter = "Type ='R'" Me.FilterOn = True
Case Is = 3: Me.FilterOn = False Me.Filter = "Type='S'" Me.FilterOn = True
Case Is = 4: Me.FilterOn = False Me.Filter = "Type='V'" Me.FilterOn = True
End Select
Il y a aussi dans ma Form un DropDownList qui me permet de sélectionner un record précis.
Comment dois-je m'y prendre pour que la DropDownList n'affiches QUE les records résultant du filrte en cours?
D'avance merci
Frédéric
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Je précisais juste que je ne savais pas si la rowsource de ta liste était une requête enregistrée ou une instruction SQL.
Dans ton cas, il s'agit d'une instruction SQL. La table Q_Srv contient le champ Type. Il faut décomposer ton SQL pour extraire momantanément la clause Order By, mettre le critere supplémentaire et rajouter le Order by après. {Les parenthèses d'Access sont pénibles}.
A mon avis, juste le Case 2,3,4 doit être modifié comme suit: Case 2,3,4 position = InStr(OldChaine, "Order By") NewSQL = left(OldSQL, position) Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'" NewSQL=NewSQL & " And " & Me.Filter & " " & Mid(OldSQL, position) Me.FilterOn=True End Select
Par contre, au début de ta procédure, tu déclares position par Dim position as Long
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Je précisais juste que je ne savais pas si la rowsource de ta liste
était une requête enregistrée ou une instruction SQL.
Dans ton cas, il s'agit d'une instruction SQL. La table Q_Srv contient
le champ Type. Il faut décomposer ton SQL pour extraire momantanément la
clause Order By, mettre le critere supplémentaire et rajouter le Order
by après. {Les parenthèses d'Access sont pénibles}.
A mon avis, juste le Case 2,3,4 doit être modifié comme suit:
Case 2,3,4
position = InStr(OldChaine, "Order By")
NewSQL = left(OldSQL, position)
Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'"
NewSQL=NewSQL & " And " & Me.Filter & " " & Mid(OldSQL, position)
Me.FilterOn=True
End Select
Par contre, au début de ta procédure, tu déclares position par
Dim position as Long
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Je précisais juste que je ne savais pas si la rowsource de ta liste était une requête enregistrée ou une instruction SQL.
Dans ton cas, il s'agit d'une instruction SQL. La table Q_Srv contient le champ Type. Il faut décomposer ton SQL pour extraire momantanément la clause Order By, mettre le critere supplémentaire et rajouter le Order by après. {Les parenthèses d'Access sont pénibles}.
A mon avis, juste le Case 2,3,4 doit être modifié comme suit: Case 2,3,4 position = InStr(OldChaine, "Order By") NewSQL = left(OldSQL, position) Me.Filter="Type='" & choose(BtQuickFilter.value-1,"R","S","T") & "'" NewSQL=NewSQL & " And " & Me.Filter & " " & Mid(OldSQL, position) Me.FilterOn=True End Select
Par contre, au début de ta procédure, tu déclares position par Dim position as Long
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr