Bubble Sort

Solange Sie mit Datenzugriffsobjekten hantieren, ist das Sortieren von Daten eine einfache Angelegenheit. Diese übernehmen Sortierungen etwa über die SQL-Anweisung OrderBy oder dezidierte Sort-Methoden. Bei in Arrays untergebrachten Datenmengen unter VBA lässt Sie Access jedoch im Regen stehen. Hier kommen Sie um eigens programmierte Routinen nicht herum.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1601_Klassenmodule.accdb im VBA-Modul mdlSort.

Abstract

Hin und wieder kommt es vor, dass Sie Daten nicht nur über Recordsets verwalten müssen, sondern auch über Arrays. Ein Beispiel wäre das Einlesen externer Textdateien, die tabellarischen Aufbau aufwiesen. In der Regel öffnen Sie solche Dateien über die Open-Anweisung und speichern ihren Inhalt in eine String-Variable. Die Split-Methode ermöglicht anschließend das Auftrennen der Zeilen in die Elemente eines String-Arrays. Möchten Sie diese Elemente nun nach einem bestimmten Kriterium sortieren, so ist eine Sortierroutine gefragt.

Es existiert ein Unmenge von Sortieralgorithmen mit Namen, wie QuickSort, HeapSort, MergeSort, ShellSort oder InsertionSort, die in der Regel zwar meist mit nur wenigen Zeilen Programmcode auskommen, jedoch häufig in ihrer Funktionalität nur schwer zu durchschauen sind. Anders beim BubbleSort-Algorithmus, der zwar in Hinsicht auf Performance der mit Abstand ineffizienteste ist, dafür jedoch umso leichter zu verstehen. Sollten Sie nicht Hunderttausende Elemente sortieren wollen, so spielt die Performance auf heutigen Rechnern in diesem Fall keine Rolle mehr.

BubbleSort

Die Sache ist recht simpel: Sie haben etwa ein eindimensionales Array mit allerlei Zeichenfolgen vor sich, die in aufsteigende Reihenfolge gebracht werden sollen. Dazu vergleicht BubbleSort jedes Element mit jedem und entscheidet, welches größer oder kleiner ist. Trifft dies zu, so vertauscht es die beiden, andernfalls nicht. Ein Beispiel-Listing sagt hier mehr, als viele Worte.

Listing 1 stellt die Routine SortArray vor, wie Sie sie im Modul mdlSort der Beispieldatenbank vorfinden. Sie übergeben der Prozedur ein Array mit Elementen, die keinesfalls nur vom Typ String sein müssen. Das Ganze funktioniert auch mit Zahlenwerten beliebiger Art, oder auch mit Datumswerten, da als Parameter MyArray ein Variant angegeben ist.

Access [basics]

Unser exklusives Angebot für Dich!

Access im Unternehmen
7,90 € im Monat*

(Das Abo ist jederzeit monatlich kündbar)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →