| 

.NET C# Java Javascript Exception

0
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).

Kennt jemand hierfür eine Lösung?
News:
10.09.2009
Fischl 5 3
jor 791 2 7
1 Antwort
2
Versuchs mit:

SELECT TOP 10 c1, c2, (c1 + c2) AS c3 FROM t ORDER BY (c1+c2)


funktioniert zumindest unter MySQL und Oracle.
Aber Access ist ja immer "ein bisschen" eigen.
10.09.2009
MiW 1,0k 1 8
Vielen Dank! Damit ist mein Problem gelöst.

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.
Fischl 10.09.2009

Stelle deine Sql-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH