Sortieren von Daten in einem DAO-Recordset

Wenn Sie ein Recordset-Objekt vom Tabellentyp nicht öffnen und dessen Index-Eigenschaft festlegen, können Sie nicht sicher sein, dass Datensätze in einer bestimmten Reihenfolge angezeigt werden. In der Regel möchten Sie Jedoch Datensätze in einer bestimmten Reihenfolge abrufen. Sie können z. B. Rechnungen anzeigen, die durch Erhöhen der Rechnungsnummer angeordnet sind, oder Mitarbeiterdatensätze in alphabetischer Reihenfolge nach ihren Nachnamen abrufen. Um Datensätze in einer bestimmten Reihenfolge anzuzeigen, sortieren Sie sie.

Zum Sortieren von Daten in einem Recordset-Objekt, das keine Tabelle ist, verwenden Sie eine SQL ORDER BY-Klausel in der Abfrage für das Recordset-Objekt. Sie können eine SQL-Zeichenfolge angeben, wenn Sie ein QueryDef-Objekt erstellen, wenn Sie eine gespeicherte Abfrage in einer Datenbank erstellen oder die OpenRecordset-Methode verwenden.

Es ist auch möglich, Daten zu filtern, wobei Sie das von einer Abfrage zurückgegebene Resultset auf Datensätze beschränken, die bestimmte Kriterien erfüllen. Für jede Art von OpenRecordset-Objekt muss zum Filtern von Daten eine SQL WHERE-Klausel in der ursprünglichen Abfrage verwendet werden.

Im folgenden Codebeispiel wird ein Recordset-Objekt vom Typ Dynaset geöffnet und eine SQL-Anweisung verwendet, um Datensätze abzurufen, zu filtern und zu sortieren.

Dim dbsNorthwind As DAO.Database 
Dim rstManagers As DAO.Recordset 
 
Set dbsNorthwind = CurrentDb 
Set rstManagers = dbsNorthwind.OpenRecordset("SELECT FirstName, " & _ 
                  "LastName FROM Employees WHERE Title = " & _ 
                  "'Sales Manager' ORDER BY LastName") 

Eine Einschränkung beim Ausführen einer SQL-Abfrage in einer OpenRecordset-Methode besteht darin, dass sie bei jeder Ausführung neu kompiliert werden muss. Wenn diese Abfrage häufig verwendet wird, können Sie die Leistung verbessern, indem Sie zuerst eine gespeicherte Abfrage mit derselben SQL-Anweisung erstellen und dann ein Recordset-Objekt für die Abfrage öffnen, wie im folgenden Codebeispiel gezeigt.

Dim dbsNorthwind As DAO.Database 
Dim rstSalesReps As DAO.Recordset 
Dim qdfSalesReps As DAO.QueryDef 
 
Set dbsNorthwind = CurrentDb 
 
Set qdfSalesReps = dbsNorthwind.CreateQueryDef("SalesRepQuery") 
qdfSalesReps.SQL = "SELECT * FROM Employees WHERE Title = " & _ 
                   "'Sales Representative'" 
 
Set rstSalesReps = dbsNorthwind.OpenRecordset("SalesRepQuery") 

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.