FAQ MS-Access
FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
- Dans un formulaire en fin d'enregistrement un appui sur la touche Tab provoque le passage à l'enregistrement suivant. Comment revenir plutôt au début de la fiche ?
- Comment savoir si la ligne courante est celle d'un nouvel enregistrement ?
- Comment se positionner sur le premier/dernier/précédent/suivant/nouvel enregistrement d'un formulaire dépendant ?
- Comment se positionner sur le premier/dernier/précédent/suivant/nouvel enregistrement d'un sous-formulaire ?
- Comment obtenir le numéro de l'enregistrement actuel du formulaire ?
- Comment ouvrir un formulaire en se positionnant sur un enregistrement spécifique ?
- Comment se positionner sur un nouvel enregistrement de mon sous-formulaire ?
- Comment, à partir d'une valeur de mon formulaire, se positionner sur les enregistrements correspondants du sous-formulaire ?
- Comment obtenir la position en pourcentage de l'enregistrement actuel du formulaire ?
- Comment se déplacer de X enregistrements dans un formulaire ?
Il suffit de régler la propriété Cycle du formulaire (onglet Autres) et mettez-la à "Enregistrement en cours".
Il faut vérifier la propriété NewRecord du formulaire.
Se positionner ...
... sur le premier enregistrement :
DoCmd.GoToRecord
, , acFirst
... sur le dernier enregistrement :
DoCmd.GoToRecord
, , acLast
... sur le précédent enregistrement :
DoCmd.GoToRecord
, , acPrevious
... sur l'enregistrement suivant :
DoCmd.GoToRecord
, , acNext
... sur un nouvel enregistrement :
DoCmd.GoToRecord
, , acNewRec
Lien : Comment se positionner sur le premier/dernier/précédent/suivant/nouvel enregistrement d'un sous-formulaire ?
Lien : Comment se déplacer de X enregistrements dans un formulaire ?
Pour cela il faut utiliser le Recordset du sous-formulaire.
Se positionner ...
... sur le premier enregistrement :
Me.CadreSousFormulaire.Form.Recordset.MoveFirst
... sur le dernier enregistrement :
Me.CadreSousFormulaire.Form.Recordset.MoveLast
... sur le précédent enregistrement :
Me.CadreSousFormulaire.Form.Recordset.MovePrevious
... sur l'enregistrement suivant :
Me.CadreSousFormulaire.Form.Recordset.MoveNext
... sur un nouvel enregistrement :
Me.CadreSousFormulaire.Form.Recordset.AddNew
... se déplacer de X enregistrements :
Me.CadreSousFormulaire.Form.Recordset.Move
X
où X est un entier positif ou négatif.
Utilisez la propriété CurrentRecord (voir aide Access).
Il faut utiliser la propriété SelTop du formulaire dans la procédure Form_Open. Dans cet exemple nous nous placerons sur le dernier enregistrement si le formulaire contient moins de six enregistrements, et sur le cinquième en partant de la fin dans le cas contraire. Ceci sera par exemple utilisé dans un formulaire en mode feuille de données. En effet, si nous nous positionnons sur le dernier enregistrement, seul celui-ci apparaîtra sur le formulaire. Ainsi, se positionner sur le cinquième en partant de la fin nous assure de voir à l'écran au moins les cinq derniers enregistrements.
Private
Sub
Form_Open
(
Cancel As
Integer
)
Dim
lng As
Long
' Obtient le nombre d'enregistrements
lng =
Me.RecordsetClone.RecordCount
' Atteint le dernier
Me.SelTop
=
lng
' Remonte de 6 enregistrements si cela est possible
If
lng >
5
Then
Me.SelTop
=
lng -
5
End
If
End
Sub
Il suffit dans un premier temps de donner le focus au sous-formulaire, puis dans un second temps de se positionner sur le nouvel enregistrement :
Me.MonSsFormulaire.SetFocus
DoCmd.RunCommand
acCmdRecordsGoToNew
Il faut définir les champs Pères et Fils dans votre contrôle contenant le sous-formulaire :
Champs pères : txtPere
Champs fils : txtFils
Où txtPere est le nom du contrôle du formulaire contenant la valeur qui nous intéresse et où txtFils est le nom du contrôle du sous-formulaire qui doit correspondre à la valeur du formulaire principal.
Par exemple si txtPere contient "1", seuls les enregistrements du sous-formulaire dont txtFils est égal à "1" seront affichés.
Pour cela, il faut utiliser la propriété PercentPosition du Recordset DAO du formulaire :
Msgbox
Me.Recordset.PercentPosition
Pour cela il faut utiliser la propriété Move du Recordset du formulaire.
Exemple pour reculer de dix enregistrements :
Me.Recordset.Move
-
10
Lien : Comment se positionner sur le premier/dernier/précédent/suivant/nouvel enregistrement d'un formulaire dépendant ?
Lien : Comment se positionner sur le premier/dernier/précédent/suivant/nouvel enregistrement d'un sous-formulaire ?