Tri manuel dans form
Si l'on souhaite trier les enregistrements d'un formulaire continu de manière manuelle, c. à d. sans que la source ne possède un champ qui se prête au tri désiré, il faut se rabattre sur un champ "numéro de ligne".
- Ce formulaire en continu sera basé sur une requête dans laquelle le tri sera basé sur le champ "NumLigne".
- Ce formulaire, s'il est sous-formulaire, pourra contenir une clé externe le liant au formulaire principal.
- Le champ "NumLigne" peut ne pas être affiché dans le formulaire.
- On placera dans la section détail un petit bouton flêche vers le haut (cmdUp) et un autre bouton flêche vers le bas (cmdDown).
- Ne pas oublier d'activer la référence DAO !
Le code des boutons que l'on placera dans la Sub de l'événement "Sur Click" :
Private Sub cmdUP_Click() Dim AboveLineNumber As Long Dim CurrentLineNumber As Long Dim strField As String '//Adaptez le nom du champ contenant le numéro de ligne strField = "NumLigne" With Me.RecordsetClone .Bookmark = Me.Bookmark If CurrentRecord = 1 Then 'on est sur le premier enregistrement Exit Sub Else CurrentLineNumber = .Fields(strField) .MovePrevious AboveLineNumber = .Fields(strField) .Edit .Fields(strField) = CurrentLineNumber .Update .MoveNext .Edit .Fields(strField) = AboveLineNumber .Update End If Me.Requery End With End Sub
Private Sub cmdDown_Click() Dim BelowLineNumber As Long Dim CurrentLineNumber As Long Dim strField As String '//Adaptez le nom du champ contenant le numéro de ligne strField = "NumLigne" With Me.RecordsetClone .Bookmark = Me.Bookmark If CurrentRecord = .RecordCount Then 'on est sur le dernier enregistrement Exit Sub Else CurrentLineNumber = .Fields(strField) .MoveNext BelowLineNumber = .Fields(strField) .Edit .Fields(strField) = CurrentLineNumber .Update .MovePrevious .Edit .Fields(strField) = BelowLineNumber .Update End If Me.Requery End With End Sub
Dernière modification : 22/04/2007 17:44
Catégorie : Les mémos - Formulaires
Page lue 8079 fois