Problem bei einer Abfrage in Access 2000 Frontend und Oracle 10g Backend

10/07/2008 - 09:45 von Roland Weber | Report spam
Guten Morgen,

ich hab leider schon wieder ein Problem mit meiner Datenbank. Ich habe
in einem Formular ein Listenfeld, das die Daten aus einer Abfrage
aufruft. Bei Datensatzherkunft ist also folgendes eingetragen:

SELECT [Abfrage_1].[Tabelle_1_ID], [Abfrage_1].[Bezeichnung] FROM
[Abfrage_1];

Die zugehörige Abfrage sieht folgendermaßen aus (Abfrage_1):

SELECT DISTINCT [Tabelle_1].[TYP], [Tabelle_1].[BEZEICHNUNG],
[Tabelle_1].[Tabelle_1_ID]
FROM Tabelle_1 INNER JOIN (Tabelle_2 JOIN Tabelle_3 ON [Tabelle_2].
[Tabelle_2_ID]=[Tabelle_3].[Tabelle_3_ID]) ON [Tabelle_1].
[Tabelle_1_ID]=[Tabelle_3].[Tabelle_1_ID]
GROUP BY [Tabelle_1].[TYP], [Tabelle_1].[BEZEICHNUNG], [Tabelle_1].
[Tabelle_1_ID], [Tabelle_3].[Tabelle_3_ID]
ORDER BY [Tabelle_1].[TYP], [Tabelle_1].[BEZEICHNUNG], [Tabelle_1].
[Tabelle_1_ID];

Ich musste die Namen der Tabellen und Variablen leider àndern, da ich
die echten Namen nicht hier reinstellen kann.Ich hoffe es ist dennoch
einigermaßen verstàndlich.

Nun zum Problem: Das Frontend hat früher mit einem Access Backend
gearbeitet und da hat das ganze so funktioniert, wie oben beschrieben.
Nun wurde das Frontend aber mit Tabellen aus einer Oracle 10g
Datenbank verknüpft und nun bekomme ich bei dieser Abfrage immer die
folgende Fehlermeldung:

ORA-01791: not a SELECTed expression

Wenn ich aus der Abfrage das "ORDER BY" herausnehme, dann funktioniert
das ganze. Sobald es aber drin ist, bekomme ich die obige
Fehlermeldung und das Listenfeld in dem Formular bleibt leer.
Das "ORDER BY" sollte aber irgendwie in der Abfrage drin bleiben, um
die Ordnung zu erhalten. Könnt ihr mir vielleicht sagen, was hier
schief làuft, warum die Abfrage nicht mehr funktioniert. Ich hab im
Moment echt keine Idee mehr, wie ich hier weitermachen könnte.

Danke schon mal für eure Hilfe!

MFG
Roland
 

Lesen sie die antworten

#1 Josef Poetzl
10/07/2008 - 10:42 | Warnen spam
Hallo!

Roland Weber schrieb:
SELECT DISTINCT [Tabelle_1].[TYP], [Tabelle_1].[BEZEICHNUNG],
[Tabelle_1].[Tabelle_1_ID]
FROM Tabelle_1 INNER JOIN (Tabelle_2 JOIN Tabelle_3 ON [Tabelle_2].
[Tabelle_2_ID]=[Tabelle_3].[Tabelle_3_ID]) ON [Tabelle_1].
[Tabelle_1_ID]=[Tabelle_3].[Tabelle_1_ID]
GROUP BY [Tabelle_1].[TYP], [Tabelle_1].[BEZEICHNUNG], [Tabelle_1].
[Tabelle_1_ID], [Tabelle_3].[Tabelle_3_ID]
ORDER BY [Tabelle_1].[TYP], [Tabelle_1].[BEZEICHNUNG], [Tabelle_1].
[Tabelle_1_ID];

Ich musste die Namen der Tabellen und Variablen leider àndern, da ich
die echten Namen nicht hier reinstellen kann.



Sind Passwörter in den Feldbezeichnungen enthalten? :-))

Nun zum Problem: Das Frontend hat früher mit einem Access Backend
gearbeitet und da hat das ganze so funktioniert, wie oben beschrieben.
Nun wurde das Frontend aber mit Tabellen aus einer Oracle 10g
Datenbank verknüpft und nun bekomme ich bei dieser Abfrage immer die
folgende Fehlermeldung:

ORA-01791: not a SELECTed expression

Wenn ich aus der Abfrage das "ORDER BY" herausnehme, dann funktioniert
das ganze. Sobald es aber drin ist, bekomme ich die obige
Fehlermeldung und das Listenfeld in dem Formular bleibt leer.
Das "ORDER BY" sollte aber irgendwie in der Abfrage drin bleiben, um
die Ordnung zu erhalten. Könnt ihr mir vielleicht sagen, was hier
schief làuft, warum die Abfrage nicht mehr funktioniert. Ich hab im
Moment echt keine Idee mehr, wie ich hier weitermachen könnte.



Oftmals "spinnt" die ODBC-Weitergabe von Anweisungen an das BE.

Teste einmal:
... ORDER BY 1, 2, 3
Vielleicht hast du Glück und Jet sortiert dann so wie es sein soll.
(Das ist jetzt aber nur geraten)

Was mich etwas irritiert: Distinct und Group By in einer Abfrage.
(Den GroupBy-Teil kannst du vermutlich komplett entfernen.)

Die inner joins auf Tabelle_2 und Tabelle_3 werden benötigt, um die
Datenmenge einzuschrànken? (Im Select-Teil werden sie nicht
verwendet.)


Bezüglich Abfrage/Sichten kann ich dir empfehlen, diese direkt im DBMS
unterzubringen und dann eine Sicht als Access-Tabelle zu verknüpfen -
oder gespeicherte Prozeduren bzw. Pass-Through-Abfragen zu verwenden.

Ich verwende auch gerne ADODB-Methoden mit direkter Verbindung zum BE.


mfg
Josef

EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen