On
dispose d'un formulaire tabulaire (ou d'un sous-formulaire) qu'on
souhaite pouvoir trier sur n'importe quelle colonne.
NB: ce formulaire doit être construit sur une requête
ayant déjà un ordre de tri.
1 -
Dans un module placer ceci:
Public
Sub tricol(frm As Form, fld As String, asc As String)
Dim strSQL As String
strSQL = frm.RecordSource
strSQL = Left$(strSQL, InStr(strSQL, "ORDER BY") + 8)
& fld
If asc = "+" Then
strSQL = strSQL & " ASC;"
Else
strSQL = strSQL & " DESC;"
End If
frm.RecordSource = strSQL
frm.Refresh
End Sub
2
- Dans l'en-tête du formulaire placer des boutons en tant
que titre de chaque colonne.
3
- Dans la procédure sous-jacente de l'évènement
"sur clic" de chaque bouton placer ceci:
tricol
Me, "[leNomDuChampàTrier]", "+"
4
- Amélioration: changer l'ordre de tri à chaque clic:
If
Me![btnDate].Caption = "Date -" Then
Me![btnDate].Caption = "Date +"
tricol Me, "[monChampDate]", "+"
Else
Me![btnDate].Caption = "Date -"
tricol Me, "[monChampDate]", "-"
End If
|