Abfrage nach jüngstem bzw. aktuellstem Datum

Eigentlich bezieht sich meine Frage auf ein bereits in folgenden archivierten Threads beschriebenes Problem:

/t/access-juengste-groesste-datumswerte-einer-tabell…

/t/access07-frage-zu-einer-abfrage/5088379

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?

Hallo,

WO steht dieses SQL-Statement?

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.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Franz!

Vielen Dank für Deine Antwort!

Habe es dann mal mit dem neuen Code probiert, aber das Problem bleibt das gleiche. :frowning:

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.

Grüße aus Halle/Saale
Marco

Hallo,

und da fehlt nun eine schliessende Klammer vor Order, bzw dahinter…

Du kannst doch aber das SQL-Statement aus dem Fenster „SQL_Ansicht“ im Abfrageentwurf kopieren und hier reinstellen.…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo,

und da fehlt nun eine schliessende Klammer vor Order, bzw
dahinter…

…die in deinem vorigen Vorschlag aber noch fehlte :wink: Aber daran liegt es nicht, ob mit oder ohne Klammer die Fehlermeldung ist die gleiche!

Du kannst doch aber das SQL-Statement aus dem Fenster
„SQL_Ansicht“ im Abfrageentwurf kopieren und hier
reinstellen.…

Das schon (vgl. Ausgangsmail), aber nicht die Fehlermeldung selbst!

Hallo,

mhmm,

bei meinem Vorschlag fehlt keine Klammer…

Vermutlich erkennt Access die Unterabfrage nicht als solches und „vergißt“ halt die abschliessende Klammer in der Msgbox.

Reduziere halt mal die Unterabfrage auf das Nötigste und probiere es aus. (zuerst die Order by Klausel in der Uabf entfernen.

Wie gesagt, bei mir trat kein Syntax-Fehler auf.

WANN kommt der denn? Wenn vom SQL-Fenster in die Entwurfsansicht gewechselt oder die Abfrage aus der Entwurfsansicht ausgeführt wird?

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Moin Moin,

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?

Beut und Pin sind beide vom Datentyp Text?

Grüße aus Rostock
Wolfgang
(Netwolf)

Moin, Maunz,

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?

Gruß Ralf

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!