Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recordsource et recordset

8 réponses
Avatar
fth
Bonjour,
une suite à mon fil d'hier mais sur un autre sujet ;-)

situation:
MyForm en mode liste avec dans la partie "detail" en mode continuous form
les champs;
avec un click droit sur un champs, je filtre ("excluding selection" ou "By
selection");

sur click d'un bouton, je crée un recordset ( set rst = me.recordset)
la, ça fonctionne pas très bien malgré pas mal de test en tout genre;

j'ai un combo qui réalise à peut pres la mm chose cad un filtre mais sur
"after update", mon code fait :
me.recordsource = "MyQuery"
la, ça fonctionne très bien.

je me dit donc que si je peux passer le recordset comme un recordsource, mon
probleme sera réglé.
Qu'en pensez vous?

le but final est de permettre à l'utilisateur de réaliser des filtrages avec
le click droit+ filter, d'obtenir donc la liste qu'il désire (jusque la ça
fonctionne très bien) puis de pouvoir imprimer cette liste.
Il faut donc réaliser un recordsource, basé sur le recordset, et passer le
filtrage des données.

D'avance merci pour vos piste

Frédéric

8 réponses

Avatar
3stone
Salut,

"fth"
[...]
| le but final est de permettre à l'utilisateur de réaliser des filtrages avec
| le click droit+ filter, d'obtenir donc la liste qu'il désire (jusque la ça
| fonctionne très bien) puis de pouvoir imprimer cette liste.


Pour créer un filtrage "personnalisé" tu peux regarder ceci :
http://www.3stone.be/access/articles.php?lng=fr&pgC

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
fth
Salut Pierre,
ça rejoint ce que je disais dans mon message, utiliser les filter. trop
bien.
reste à passer ça dans mon code :-/

mon idée serait de "construire" une query qui deviendrait le recordsource
pour mes impressions du genre
MyTxtSql = 'l'instruction sql de la query de base'
MyFilter = me.filter
me.recordsource = MyTxtSql & MyFilter.

je continue à peaufiner et si tu as une petite piste ou une remarque, c'est
toujours bienvenu.

par contre, ton bout de code est parfait pour filter sur plusieurs combo
(questions récurentes ici non?)

Bonne journée

Frédéric


"3stone" wrote in message
news:
Salut,

"fth"
[...]
| le but final est de permettre à l'utilisateur de réaliser des filtrages
avec
| le click droit+ filter, d'obtenir donc la liste qu'il désire (jusque la
ça
| fonctionne très bien) puis de pouvoir imprimer cette liste.


Pour créer un filtrage "personnalisé" tu peux regarder ceci :
http://www.3stone.be/access/articles.php?lng=fr&pgC

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/



Avatar
3stone
Salut,

"fth"
[...]
| mon idée serait de "construire" une query qui deviendrait le recordsource
| pour mes impressions du genre
| MyTxtSql = 'l'instruction sql de la query de base'
| MyFilter = me.filter
| me.recordsource = MyTxtSql & MyFilter.


Pourquoi vouloir jouer sur le recordsource ?
puisque de toutes façons tu fais "remonter" tous les enregistrements !

Si la source ne change pas, que seul le "filtrage" est modifié,
contente toi de modifier le filtre.
Ce sera toujours ca de gagné en performance.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
fth
Salut,

Ben, quand je filtre et que je demande l'impression, le nombre de page
imprimée est mauvaise.
J'ai aussi utilisé le filtre que tu m'avais conseillé dans un précédent post
mais rien n'y fait
comme si le recordset n'existait pas en fait.
par contre, quand je travail uniquement avec le recordsoruce, c'est toujours
juste.

en fait, il devrait imprimer le recordset =recordsource-le filtre
me trompe-je?

F

"3stone" wrote in message
news:O7bP0$
Salut,

"fth"
[...]
| mon idée serait de "construire" une query qui deviendrait le
recordsource
| pour mes impressions du genre
| MyTxtSql = 'l'instruction sql de la query de base'
| MyFilter = me.filter
| me.recordsource = MyTxtSql & MyFilter.


Pourquoi vouloir jouer sur le recordsource ?
puisque de toutes façons tu fais "remonter" tous les enregistrements !

Si la source ne change pas, que seul le "filtrage" est modifié,
contente toi de modifier le filtre.
Ce sera toujours ca de gagné en performance.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/



Avatar
3stone
re,

"fth"
| Ben, quand je filtre et que je demande l'impression, le nombre de page
| imprimée est mauvaise.


Lorsque tu demande l'impression (de l'état ? ) tu dois aussi transmettre
le filtre, évidement !

DoCmd.OpenReport "mon_etat", , Me.Filter

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
fth
c'est la que ça se corse ;-)

j'ai un select case pour choisir le bon contrat à imprimer par benevole
Select Case ContratType

le tout est englobé dans un do until/ loop pour passer chaque enregistrement
il me faut donc avant cela définir la source de donnée.

Case "Benevole":
DoCmd.OpenReport "RptContratBenevole", acViewPreview, , MyFilter
Me.ContratSend = -1

Case "Benevole_defraye":
DoCmd.OpenReport "RptContratBenevDef", acViewPreview, MyFilter
Me.ContratSend = -1

Case "Chauffeur":
DoCmd.OpenReport "RptContratChauffeur", acViewPreview, ,
MyFilter
Me.ContratSend = -1

Case Else
MsgBox "veuillez compléter les données manquantes", vbOKOnly,
"..."


"3stone" wrote in message
news:%
re,

"fth"
| Ben, quand je filtre et que je demande l'impression, le nombre de page
| imprimée est mauvaise.


Lorsque tu demande l'impression (de l'état ? ) tu dois aussi transmettre
le filtre, évidement !

DoCmd.OpenReport "mon_etat", , Me.Filter

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/



Avatar
fth
suite ...

quandje met
Select Case ContratType

Case "Benevole":
DoCmd.OpenReport "RptContratBenevole", acViewPreview, MyFilter
Me.ContratSend = -1 >>> ça calle ici
"3stone" wrote in message
news:%
re,

"fth"
| Ben, quand je filtre et que je demande l'impression, le nombre de page
| imprimée est mauvaise.


Lorsque tu demande l'impression (de l'état ? ) tu dois aussi transmettre
le filtre, évidement !

DoCmd.OpenReport "mon_etat", , Me.Filter

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/



Avatar
3stone
Salut,

"fth"
| j'ai un select case pour choisir le bon contrat à imprimer par benevole
| Select Case ContratType
|
| le tout est englobé dans un do until/ loop pour passer chaque enregistrement
| il me faut donc avant cela définir la source de donnée.


Pour la boucle, utilise le recordsetclone...
Avec quelque chose comme :

Dim rs As Recordset
Set rs = Me.RecordsetClone

With rs
Do Until .EOF
'Récupérer la clé primaire de l'enregistrement en cours
'pour ouvrir ton état avec un Where sur la clé primaire

' rs!cle_primaire

'ton traitement


rs.MoveNext
Loop
End With

Set rs = Nothing


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/