Sous=formulaire
Le
Albert

Bonjour
Base.MDB gérée avec Access 2007 ou 2010.
J'ai un formulaire et dessous un sous formulaire (relation père-fils) en
mode feuille de données qui affiche 5 lignes.
On ajoute continuellement des données dans le sous formulaire, et quand il y
a plus que cinq entrées il faut utiliser l'ascenceur pour aller à la
dernière ligne, cela devient vite fastidieux, surtout si la liste est
longue.
Est-il possible que le sous formulaire affiche les dernières données entrées
au lieu des premières ?
Vos suggestions sont bienvenues.
merci
--
albertri-at-videotron.ca.invalid
Base.MDB gérée avec Access 2007 ou 2010.
J'ai un formulaire et dessous un sous formulaire (relation père-fils) en
mode feuille de données qui affiche 5 lignes.
On ajoute continuellement des données dans le sous formulaire, et quand il y
a plus que cinq entrées il faut utiliser l'ascenceur pour aller à la
dernière ligne, cela devient vite fastidieux, surtout si la liste est
longue.
Est-il possible que le sous formulaire affiche les dernières données entrées
au lieu des premières ?
Vos suggestions sont bienvenues.
merci
--
albertri-at-videotron.ca.invalid
Bonjour,
Voir la requête sur laquelle est basée le sous-formulaire, plus
particulièrement sa clause ORDER BY.
Sur l'événement chargement (load)
DoCmd.GoToRecord , , acNewRec
"Blaise" news:k29n9n$j6c$
Vous avez bien saisie l'idée de ma demande.
Quand j'ouvre le formulaire seul, créé pour utiliser comme sous formulaire,
en mode feuille de données avec l'ajout de "DoCmd.GoToRecord , , acNewRec"
placé sur l'évènement "Sur OUVERTURE" ouvre le formulaire à la dernière
ligne sur une nouveau enregistrement.
Lorsque utilisé comme sous-formulaire il n'y a que DEUX évènements "Sur
entrée et Sur sortie" et cela n'a aucun effet sur la position du curseur.
Private Sub FRL_SF_Cot_Enter()
DoCmd.GoToRecord , , acNewRec
End Sub
Par ailleurs j'ai trouvé sur le même site
http://access.developpez.com/faq/?page=PositionForm
Private Sub FRL_SF_Cot_Enter()
Me.FRL_SF_Cot.SetFocus
DoCmd.RunCommand acCmdRecordsGoToNew
End Sub
Lorsque je clique sur l'ascenseur du sous-formulaire ceci me place sur la
dernière ligne "(Nouv.")
Si je modifie la commande à LAST "DoCmd.RunCommand acCmdRecordsGoToLAST")
ceci place le curseur sur le dernier enregistrement.
C'est déjà une grande amélioration
Merci
Albert
"Gloops" news:k29n2b$qvj$
Cette fois c'est Blaise qui a gagné
Voir ma réponse à Blaise.
Merci quand même
Albert
Albert a écrit, le 06/09/2012 04:09 :
Bonjour,
Voir la requête sur laquelle est basée le sous-formulaire, plus
particulièrement sa clause ORDER BY.
La Macro
Private Sub FRL_SF_Cot_Enter()
Me.FRL_SF_Cot.SetFocus
DoCmd.RunCommand acCmdRecordsGoToNew
End Sub
Permet d'afficher les dernières lignes du sous-formulaire mais seulement
après avoir cliqué sur le bas de l'ascenseur du sous-formulaire.
Y a-t'il moyen d'améliorer, pour que le sous-formulaire affiche les
dernières lignes aussitôt que le formulaire principal affiche un autre
enregistrement, sans nécessité de re-cliquer sur le sous-formulaire ?
Merci encore pour vos suggestions.
Albert
"Albert" news:k2ai00$q25$
Ah oui, sur le Form_Current du formulaire principal ?
Il y a deux moyens. Si le code indiqué donne satisfaction, on peut le
mettre dans le Form_Current du formulaire principal. Attention que si on
a écrit un code dans le sous-formulaire, si on veut l'appeler du
formulaire principal, il faut penser à déclarer ce code comme Public, et
non Private. Mais là il semble que ça ne soit pas le cas.
Sinon il y a un code qui peut paraître plus sophistiqué, mais qui est
assez classique, c'est déclarer un Recordsetclone sur le jeu
d'enregistrements du sous-formulaire, déplacer son curseur vers la fin,
et reporter son signet vers le jeu d'enregistrements du sous-formulaire.
C'est ce qu'on utilise surtout pour une recherche en fait, en mettant
FindFirst à la place de MoveLast. (Attention pour la recherche : si le
formulaire est ouvert sur une table, ce n'est pas FindFiset mais Seek
-plus rapide mais nécessite un index.)
L'avantage de la deuxième technique est qu'elle ne nécessite pas de
mettre le focus sur le sous-formulaire. Parfois ça peut se ressentir su r
les temps de traitement.
Sans filet car je n'ai pas de quoi tester :
Dim Rs As Recordset
Set Rs = Controls("FR1_SF").Form.Recordsetclone
Rs.MoveLast
Controls("FR1_SF").Form.Bookmark = Rs.Bookmark
Rs.Close
Set Rs = Nothing
_____________________________________
Albert a écrit, le 07/09/2012 15:59 :
Si je continue je vais avoir droit à une blague sur l'aspirine ...
Il me semble qu'on pourrait faire tout simplement, dans le Form_Current :
Controls("FR1_SF").Form.Recordset.MoveLast
Et d'ailleurs il y a une erreur sur la ligne citée ci-dessus, il fallai t
lire :
Controls("FR1_SF").Form.Recordset.Bookmark = Rs.Bookmark
"Gloops" news:k2f4ma$a7r$
J'ai créé et ajouté la table "TBLCotisations" le printemps dernier, et on a
entré les données des deux denières années, et pour quelques membres on a
inclus jusqu'à 10 ans, pour tester.
La majorité des 400 membres ont déjà cotisé, la période de ré-inscription se
termine à la fin du mois, il ne restera qu'à ajouter les nouveaux. C'est
en inscrivant la cotisation des membres anciens que nous avons remarqué
qu'il fallait utiliser l'ascenseur, le sous-formulaire n'affiche que 5
lignes, ce ne fut pas un problème cette année, mais ce le sera dans le
futur.
Donc, il n'y a aucune urgence, on peut prendre notre temps.
J'ai ma grosse bible ACCESS 2007 de Hervé Inisan que je peux consulter
--------------------------
J'ai essayé ce qui suit avec le nom du SF ("FRL_SF_Cot") mais sans
résultat.
Dim Rs As Recordset
Set Rs = Controls("FR1_SF").Form.Recordsetclone
Rs.MoveLast
Controls("FR1_SF").Form.Bookmark = Rs.Bookmark
Rs.Close
Set Rs = Nothing
--------------------------------
Je reviendrai avec les résultats d'autres essais.
Cela fait beaucoup de choses a essayer
Merci
--
albertri-at-videotron.ca.invalid
Ah bon donc au pire je finirai bien par avoir une machine avec Access ...
Ah, on dirait que c'était gonflé de citer ça de mémoire ...
J'avoue que je ne vois pas où est l'erreur.
Après Rs.MoveLast, que donne ceci (à regarder dans la fenêtre d'exé cution) ?
Debug.Print Rs.Recordcount
J'attends ça avec intérêt.
Oui, j'imagine très bien. J'aurais bien testé ce que j'ai proposé, mais
je n'ai pas Access sous la main ...
"Gloops" news:k2g7id$its$
Pour le recordset mentionné ci-bas, est-ce qu'il ne faut pas avoir ADO
connecté ???
Ce n'est pas le cas dans ma base, Je ne connais rien à ADO. Dans Outils
Référence j'ai coché MSOffice 14.Access etc....
Je regarde ma bible, est-ce qu'il faut mettre les commandes ADO dans le
même module que les fonctions évènementielles du formulaire ?
Même dans la bible cela n'est pas très clair.
Albert
Albert a écrit, le 08/09/2012 18:24 :
Ah bon donc au pire je finirai bien par avoir une machine avec Access ...
Ah, on dirait que c'était gonflé de citer ça de mémoire ...
J'avoue que je ne vois pas où est l'erreur.
Après Rs.MoveLast, que donne ceci (à regarder dans la fenêtre d'exécution) ?
Debug.Print Rs.Recordcount
J'attends ça avec intérêt.
Oui, j'imagine très bien. J'aurais bien testé ce que j'ai proposé, mais
je n'ai pas Access sous la main ...