In diesem Szenario muss ich mit MS Access 2003 / VB arbeiten. Es gibt einen remote Access-Server und mehrere Clients.
Ich möchte in einem Client die ersten n Zeilen eines Ergebnissets abfragen, welches nach einer berechneten Spalte sortiert sein soll.
Mein naiver Ansatz:
SELECT TOP 10 c1, c2, (c1 + c2) AS c3 FROM t ORDER BY c3
schlägt leider mit einer Dialogbox fehl: "Parameterwert für c eingeben".
Ein "Umweg" über ein Formular wie:
Form.RecordSource = "SELECT TOP 10 c1, c2, (c1 + c2) AS c3 FROM t" Form.OrderBy = "c3 DESC" Form.OrderByOn = true
ist nicht akzeptabel, da dafür alle (zu viele) Datensätze vom Server zum Client übertragen werden müssten.
Die berechnete Spalte kann nicht persistent in der Tabelle t gespeichert werden, da die Berechnung noch von Werten abhängt, die nur dem Client zur Laufzeit bekannt sind (der Übersichtlichkeit halber oben nicht dargestellt).
Anscheinend führt Access die Umbenennung der Spalten also leider erst nach der Sortierung durch. Unter Oracle 10gR2 war ich übrigens mal über ein Problem mit ähnlichem Hintergrund und gleicher Lösung gestolpert, ich glaube, das war in der HAVING-Klausel. Aber daran erinnert man sich natürlich erst im Nachhinein.
Anscheinend führt Access die Umbenennung der Spalten also leider erst nach der Sortierung durch. Unter Oracle 10gR2 war ich übrigens mal über ein Problem mit ähnlichem Hintergrund und gleicher Lösung gestolpert, ich glaube, das war in der HAVING-Klausel. Aber daran erinnert man sich natürlich erst im Nachhinein.