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
Lenguaje del código: PHP (php)

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
Lenguaje del código: PHP (php)

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.