Da ich aber leider keine unmittelbare Antwort darauf mehr geben kann und mein genau ähnliches Problem trotz Anwendung der dortigen Tips auf meinen Fall nicht gelöst ist, poste ich mal mein Problem neu.
Habe eine Personaldatenbank mit dem Ziel der Anzeige des letzten (aktuellsten) Beurteilungsdatums.
Ich habe einen im ersten o.g. Thread gemachten Lösungsvorschlag auf meinen Fall anzuwenden. Das sieht dann so aus:
SELECT t.*
FROM Dat_Beurt As t
WHERE t.BeuT & „|“ & t.Pin In
(SELECT Top 1 BeuT & „|“ & Pin
FROM Dat_Beurt
WHERE t.Pin = Pin
ORDER BY BeuT DESC)
ORDER BY Pin, BeuT DESC
Bei mir funzt das aber nicht, es wird ein angeblicher Syntaxfehler (fehlender Operator) als Fehler gemeldet.
Da ich kein Profi bin, kann mir jemand helfen wie ich die Abfrage zum Laufen bringe oder vielleicht eine andere Lösung?
Ich erhalte keinen Syntaxfehler in der SQl-Ansicht im Abfrageentwurf.
Kann jedoch mangels der Tabelle die Abfrage auch nicht ausführen. Schreib vorsichthalber mal:
SELECT t.*
FROM Dat_Beurt As t
WHERE t.BeuT & „|“ & t.Pin In
(SELECT Top 1 BeuT & „|“ & Pin FROM Dat_Beurt WHERE t.Pin = Pin ORDER BY BeuT DESC)
ORDER BY Pin, BeuT DESC
Also ohne Zeilenbrüche in der Unterabfrage.
Die Sortierung in der UAbf ist vermutlich überflüssig.
Habe es dann mal mit dem neuen Code probiert, aber das Problem bleibt das gleiche.
Da hier leider kein Screenshot uploadbar ist, schreibe ich mal den Text der Fehlermeldung von Access beim Versuch des Ausführens der Abfrage hier ab:
Syntaxfehler (fehlender Operator) in Abfrageausdruck ‚t.BeuT & „|“ & t.Pin In (SELECT Top 1 BeuT & „|“ & Pin FROM Dat_Beurt WHERE t.Pin = Pin ORDER BY BeuT DESC‘
Vielleicht sollte ich noch erwähnen, daß ich nach wie vor mit Access 97 arbeite.
SELECT t.*
FROM Dat_Beurt As t
WHERE t.BeuT & „|“ & t.Pin In
(SELECT Top 1 BeuT & „|“ & Pin
FROM Dat_Beurt
WHERE t.Pin = Pin
ORDER BY BeuT DESC)
ORDER BY Pin, BeuT DESC
Bei mir funzt das aber nicht, es wird ein angeblicher
Syntaxfehler (fehlender Operator) als Fehler gemeldet.
dir ist klar, dass man ein SQL-Statement mit einem Semikolon „;“ abschließen muss?
SELECT t.*
FROM Dat_Beurt As t
WHERE t.BeuT & „|“ & t.Pin In
(SELECT Top 1 BeuT & „|“ & Pin
FROM Dat_Beurt
WHERE t.Pin = Pin
ORDER BY BeuT DESC)
ORDER BY Pin, BeuT DESC
das läuft bei mir unter Access 2000 fehlerfrei durch, ob die Ergebnisse sinnvoll sind, kann ich natürlich mangels echter Daten nicht sagen. Hast Du mal Extras Dienstprogramme > Datenbank reparieren versucht?
Vielen lieben Dank für die Unterstützungsbemühungen!
Ich habe das ganze nochmal mit einem Kollegen ausgiebig analysiert und im Ergebnis läuft die Abfrage jetzt.
Das sieht dann mit Hilfe von zwei Abfragen so aus.
Die erste Abfrage beschränkt die Beurteilungen auf die jeweils aktuellste:
SELECT Dat_Beurt.Pin, Max(Dat_Beurt.BeuT) AS [Max von BeuT]
FROM Dat_Beurt
GROUP BY Dat_Beurt.Pin
ORDER BY Dat_Beurt.Pin;
Die zweite ist dann auch wirklich in der Lage die restlichen Daten der Tabelle (das Tabellenfeld PN steht hier für die Note) richtig zuzuordnen, in eine weitere neue Tabelle zu schreiben, so daß ich alles über Excel weiter auswerten kann:
SELECT Dat_Personal.Name, Dat_Personal.VName, [neue Abfrage_Beurt].[Max von BeuT] AS [Beurt-datum], Dat_Beurt.PN INTO [neue Tabelle- Beurteilung]
FROM ([neue Abfrage_Beurt] INNER JOIN Dat_Personal ON [neue Abfrage_Beurt].Pin = Dat_Personal.Pin) LEFT JOIN Dat_Beurt ON Dat_Personal.Pin = Dat_Beurt.Pin
WHERE (((Dat_Beurt.BeuT)=[neue Abfrage_Beurt]![Max von BeuT]))
GROUP BY Dat_Personal.Name, Dat_Personal.VName, [neue Abfrage_Beurt].[Max von BeuT], Dat_Beurt.PN
ORDER BY Dat_Personal.Name;
Bin echt froh die Sache endlich geschafft zu haben. Und nochmals vielen Dank an das Forum!