closed
Goto Top

The specified field xyz could refer to more than one table - MS Access 2007

Hi,

ich erhalte bei einem meiner Formulare in MS Access 2007 den Fehler "The specified field xyz could refer to more than one table listed in the FROM clause of your SQL statement."

Natürlich habe ich nach dem Fehler schon gegoogelt, aber alle Lösungsvorschläge konnten nicht helfen. Hier meine Versuche:

- Datenbank komprimiert und repariert
- Bei dem SQL Statement darauf geachtet, dass die Tabellennamen mit angegeben werden (da die Felder ja doppelt vorkommen)
- Bei anderen Elementen des Formulars nachgeschaut, ob ein Feld mit identischem Namen abgefragt wird ohne den Tabellennamen anzugeben
- Die Query abgespeichert und diese verwendet

Leider hat alles nichts geholfen.

Das Problem ist auch erst aufgetaucht, als ich ein ORDER BY Statement hinzugefügt habe (dabei handelt es sich um das doppelt vorkommende Feld). Das merkwürdige ist, dass das SQL-Statement ohne Probleme funktioniert. Hier das Statement:

SELECT tblAgenda.Position, tblAgenda.Topic, tblAgenda.Responsible, tblNotes.Note, tblAgenda.Meeting_ID, tblNoteType.Type, tblNotes.NoteResponsible, tblNotes.DueDate, tblNotes.Status, tblNotes.ID, tblAgenda.ID
FROM tblNoteType INNER JOIN (tblAgenda INNER JOIN tblNotes ON tblAgenda.[ID] = tblNotes.[Agenda_ID]) ON tblNoteType.[ID] = tblNotes.Type_ID
ORDER BY tblNotes.ID;

Vielen Dank vorab.

Content-ID: 208011

Url: https://administrator.de/contentid/208011

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

Closed
Closed 17.06.2013 um 12:49:19 Uhr
Goto Top
Also die Lösung des Problems liegt in einer Verwendung eines Ausdrucks in der Select Anweisung von einer der IDs und diesen Ausdruck dann im Folgenden weiter zu verwenden.

Ist irgendwie merkwürdig, aber damit funktioniert es.

Beste grüße
Biber
Biber 17.06.2013 um 14:22:07 Uhr
Goto Top
Moin Closed,

die Beschreibug der Ursache habe ich nicht verstanden... ist (von dir) gemeint, dass dem SQL-Parser ein Alias fehlt hinter dem "inner join tblNotes auf tblAgenda"?

Ich finde das Statement in dieser Form auch nicht sonderlich lesbar7wartbar - mir fehlt da auch ein Aliasname/correlation name.

Ich hätte es so (um-)geschrieben:
SELECT tblAgenda.Position, tblAgenda.Topic, tblAgenda.Responsible
            , tblNotes.Note, tblAgenda.Meeting_ID, tblNoteType.Type
            , tblNotes.NoteResponsible, tblNotes.DueDate, tblNotes.Status
            , tblNotes.ID,  tblAgenda.ID
FROM tblNoteType , tblAgenda, tblNotes
WHERE       tblAgenda.[ID] = tblNotes.[Agenda_ID]
   AND      tblNoteType.[ID] = tblNotes.Type_ID
ORDER BY tblNotes.ID;

Nicht nachvollziehbar ohne die Daten zu sehen ist mir, wieso du mit einem Feld für das ORDER BY auskommst.
Ist die tblNotes.ID denn einmalig über alle tblAgenda.IDs hinweg?

Wie dem auch sei - wäre nett, wenn du noch mal eine Zeile zu der Lösung/dem Problem schreibst.
Denn ich habe es nicht so ganz verstanden, andere möglicherweise auch nicht.

Grüße
Biber