Hallo Stefan,
Ich bin nicht sicher ob du bemerkt hast, dass ich bislang ADO und nicht DAO verwende.
doch, das habe ich bemerkt 
Ich habe dafür einen trivialen Grund: Das Buch mit dem ich
begonnen habe hat damit gearbeitet… Ist es unvernünftig oder
sogar falsch ADO für Automatisierungsaufgaben in
Accessdatenbanken zu verwenden?
DAO bzw. ADO sind Öffnungsmechanismen einer MDB (Datenbank)
Diese Mechanismen sind dann wichtig, wenn du per Programmiersprache auf eine MDB zugreifen willst, oder auf „fremde“ SQL-Datenbanken zugreifen willst.
Ich vermute mal du hast da ein VB-Buch?
Arbeitest du aber in Access, und hast z.B. eine Frontend- und Backenddatenbank kannst du es ignorieren. Arbeitest du nur mit einer MDB kannst du es generell ignorieren.
Leider schreibst du nicht, wie es bei dir aufgebaut ist 
Es funktioniert bislang eigentlich ganz gut: Ich habe ADO
vorwiegend zum Ausführen von in Access definierten Abfragen
und Aktionsabfragen mit Parametern verwendet.
überflüssig, wenn du unter Access arbeitest.
Habe ich Dich richtig verstanden: Ich darf also nicht mehrere
Cursor auf derselben Tabelle öffnen?
klar, auf ein TABELLE ja. Aber auf die gleiche DATENBANK mit Tabelle nicht, das wäre rekursiv.
Aber die Eigenschaft rs.sort lässt sich auch auf ein so geöffnetes
Recordset nicht einstellen. Wieso nicht?
’ Lösung mit zwei mal rs.open
Private Sub fldKunde_Exit(Cancel As Integer)
Dim rs As New ADODB.Recordset
hier dimensionierst du nur!!!
es fehlt:
SET rs As New ADODB.Recordset
außerdem bei ADO - Verknüpfungen wichtig:
rst.CursorLocation = adUseClient
siehe die Hilfe in Access:
Remarks
This property requires the CursorLocation property to be set to adUseClient. A temporary index will be created for each field specified in the Sort property if an index does not already exist.
The sort operation is efficient because data is not physically rearranged, but is simply accessed in the order specified by the index.
Setting the Sort property to an empty string will reset the rows to their original order and delete temporary indexes. Existing indexes will not be deleted.
rs.Open „SELECT * FROM Kunden ORDER BY Kunden.Firma;“,
CurrentProject.Connection, adOpenStatic, adLockReadOnly
[code …]
rs.close
rs.Open „SELECT * FROM Kunden ORDER BY Kunden.Firm_ID;“,
CurrentProject.Connection, adOpenStatic, adLockReadOnly
[code …]
’ Lösung mit zwei mal rs.sort
Private Sub fldKunde_Exit(Cancel As Integer)
Dim rs As New ADODB.Recordset
rs.Open „SELECT * FROM Kunden“, CurrentProject.Connection,
adOpenStatic, adLockReadOnly
rs.sort = „Firma“
[code …]
rs.sort = „Firm_ID“
[code …]
Grüße aus Essen
Wolfgang