Botón para ordenar registros en Access

Botón de comando en Microsoft Access para ordenar los registros del formulario

Cuando creas un botón de comando en un formulario de Access, el asistente muestra varias posibilidades pero entre ellas no está la de ordenar los registros de acuerdo con el nombre de uno de los campos. En este artículo se mostrará cómo crear ese botón que, mediante código VBA, ordenará los registros. La idea original es de Allen Browne, Microsoft MVP en Australia, quien tiene un sitio web muy útil con trucos para Access.

En Access abres el editor de Visual Basic para Aplicaciones y pegas este texto en la ventana de código:

Function SortForm(frm As Form, ByVal sOrderBy As String) As Boolean

On Error GoTo Err_SortForm

'Propósito: ordenar el formulario según la cadena
' que se pasa como parámetro. Cada vez que se pulsa alterna
' la ordenación A-Z y Z-A
'Devuelve: True si se ejecuta con éxito.
'Uso: botón de comando en cuyo evento clic se ejecute este código:
' Call SortForm(Me, "campo_de_tabla")

Dim sForm As String ' nombre del Formulario (para manejar erores)

sForm = frm.Name
If Len(sOrderBy) > 0 Then
' Invrtir el orden si ya está ordenado
If frm.OrderByOn And (frm.OrderBy = sOrderBy) Then
sOrderBy = sOrderBy & " DESC"
End If
frm.OrderBy = sOrderBy
frm.OrderByOn = True
' Ejecutado con éxito.
SortForm = True
End If

Exit_SortForm:
Exit Function

Err_SortForm:
MsgBox "Error " & Err.Number & ": " & Err.Description
Resume Exit_SortForm
End Function

Después creas el botón de comando sin el asistente y en su evento «Al hacer clic» pulsas en la casilla con puntos para abrir de nuevo el editor de Visual Basic para Aplicaciones y pegas este texto:

Private Sub btSort_Click()
Call SortForm(Me, "Nombre")
End Sub

En este ejemplo el formulario se ordena por el nombre de un campo que es precisamente «Nombre«. Al pulsar en el botón se ordena en modo descendente (A-Z) y al pulsar de nuevo lo hace en modo ascendente (Z-A) alternando entre ambos modos de ordenación.