Sorting continuous forms

Endlosformulare sortieren wie ein Profi – mit einem Klick! 💥

Wer kennt sie nicht – die kleinen, feinen Sortierpfeile, überall zu finden: Im Datei-Explorer, in Excel, auf Webseiten, in fast jedem modernen Programm. Nur in Access? Fehlanzeige

 👉 Was Access nicht kann, basteln wir uns halt selbst! 💪

Schaut mal hier – so cool kann Access aussehen:


🔧 Was brauchen wir dafür?

✅ Die Hauptfunktion ToggleSort() regelt alles: Sortierrichtung umschalten, Icons setzen
✅ Die Wrapper-Funktion SortColumn() ruft die Hauptfunktion auf und übergibt alle Parameter
✅ Ein paar CommandButtons als Spaltenüberschriften
✅ Drei Icons um die Sortierrichtung anzuzeigen


🤔 Warum zwei Funktionen?

Ganz einfach: Anstatt für jede Spaltenüberschrift (Button) ein eigenes Click-Event zu bauen, nutzen wir eine zentrale Funktion im Formular. Beim Klick übergeben wir nur den Feldnamen an SortColumn(), und diese kümmert sich um den Rest.  


Ablauf (Debug):

  1. Klick auf Überschrifts-Button
  2. SortColumn("Feldname") wird aufgerufen
  3. Diese übergibt Form, Feldname, ActivControl an ToggleSort()
  4. ToggleSort() Sortiert dann in der entsprechenden Form die gewünschte Spalte (ASC/DESC) und ändert das Icon entsprechend.


🧠 Die Funktionen

🛠️ 1. Die Hauptfunktion: ToggleSort() 

Public Sub ToggleSort(frm As Form, columnName As String, sortControl As Control)

Dim currentSort  As String          ' current sort of the form
Dim newSort      As String          ' sorting string to handover to the form
Dim sortDir      As String          ' sorting direction (ASC/DESC)
Dim sortPicture  As String          ' name of the picture (MySysResources) for the sorting commandButton
Dim ctrl         As Control         ' to loop thru the commandbuttons

    Application.Echo False

    ' get current sorting
    currentSort = Nz(frm.OrderBy, "")

    

    ' Standard: Sort in ascending order if no sorting is available
    sortDir = "ASC"
    sortPicture = "sort_ASC"

    ' Check whether it is already sorted
    If InStr(1, currentSort, "[" & columnName & "] DESC", vbTextCompare) > 0 Then
        ' New sort order: ascending
        sortDir = "ASC"
        sortPicture = "sort_ASC"

    ElseIf InStr(1, currentSort, "[" & columnName & "] ASC", vbTextCompare) > 0 Then
    ' New sort order: descending
        sortDir = "DESC"
        sortPicture = "sort_DESC"

    ElseIf InStr(1, currentSort, "[" & columnName & "]", vbTextCompare) > 0 Then
        ' If only column name without direction: assume descending
        sortDir = "DESC"
        sortPicture = "sort_DESC"

    End If

    ' Set new sort order
    newSort = "[" & columnName & "] " & sortDir
    frm.OrderBy = newSort
    frm.OrderByOn = True

    ' Reset icons for the commandButtons (goes thru all controls in the form)
    For Each ctrl In frm.Controls

        If ctrl.ControlType = acCommandButton And Left(ctrl.Name, 8) = "cmdSort_" Then  ' only commandButtons which starts with cmdSort_
            ctrl.Picture = "sort_X"
        End If

    Next ctrl

    ' Set icon for the active control
    sortControl.Picture = sortPicture

    Application.Echo True

End Sub



🧰 2. Die Wrapper-Funktion: SortColumn()

Private Function SortColumn(sColumn As String)

    Call ToggleSort(Me, sColumn, Me.ActiveControl)

End Function


👀 Die Icons woher? Noch nie von MSysResources gehört?

Dann wird’s Zeit. Einfach Systemobjekte einblenden (Rechtsklick → Navigationsoptionen) – und da liegt sie, die versteckte Icon-Goldgrube. Du kannst die Icons übrigens austauschen – mach dein Access-Design einzigartig!

▶️ sort_X → neutral
🔼 sort_ASC → aufsteigend
🔽 sort_DESC → absteigend


🔘 Warum Buttons statt Labels für die Überschriften?

Ganz einfach:

✅ Icons 
✅ Mouseover-Effekte 
✅ Cursor-Symbol ändern

Labels können das alles nicht. Und wir wollen ja schließlich ein bisschen UX-Magie, oder?


🚀 Fazit

Mit minimalem Aufwand bringt ihr endlich komfortables Sortieren auch in eure Access-Formulare. Einmal implementieren – überall verwenden. Und das ohne hässlichen VBA-Wildwuchs. Probiert es aus und lasst Access wieder strahlen! ✨

 

🧙‍♂️ Das Beste daran?

✅ Nur einmal implementieren,
✅ beliebig viele Spalten sortieren,
✅ komplett wartbar
...und Access sieht plötzlich nicht mehr aus wie 2003 😅

 

🔥 Und jetzt seid ihr dran!

Lasst uns gemeinsam ACCESS auf das nächste Level bringen.
Denn eins ist klar: Standard war gestern. Heute, wird ACCESS sexy. 🔥


💬 Hast du Fragen, Ideen, Verbesserungen oder willst deine Version zeigen? Kommentiere gern!
 


Mit dieser kleinen Erweiterung wird euer Access-Interface nicht nur intuitiver, sondern auch ein ganzes Stück „sexier“.

Die ausführliche Beschreibung und alle Hinweise findet ihr direkt im Code – wie gewohnt gut dokumentiert.


    DOWNLOAD   

Version: 1.0


Wenn du es hilfreich findest und seinen Wert anerkennst, würde ich mich über eine kleine Spende freuen, die den Aufwand und den Nutzen widerspiegelt, den es dir bietet. PayPal Eine kleine Spende