2016-07-13 9 views
0

In MS Access 2010 versuche ich, eine Variable in einer Abfrage zu deklarieren und zu initialisieren, zeigen Sie dann den Inhalt dieser Variablen. Der Grund dafür ist, den Parameter in einer komplizierteren Abfrage als Teil eines Filters zu verwenden. Beachten Sie, dass diese Aufgabe in diesem speziellen Fall in einem Abfrageobjekt und nicht in VBA ausgeführt werden muss. Hier ist der Code so weit:initialisieren Sie einen Parameter in MS Access Abfrage

 
PARAMETERS @Date DATE; 
SELECT TOP 1 FORMAT(LastUpdated, "yyyy-mm-dd") AS @Date FROM Table1 GROUP BY FORMAT(LastUpdated, "yyyy-mm-dd") ORDER BY FORMAT(LastUpdated, "yyyy-mm-dd") DESC; 
SELECT @Date; 

Dies führt zu einer Fehlermeldung: „Zeichen nach dem Ende der SQL-Anweisung gefunden“

Wenn dies geändert werden kann, wird die letzte Codezeile durch die komplexere Abfrage ersetzt, die @Date in einem Filter verwenden muss. Die andere Voraussetzung ist, dass sie in einem Abfrageobjekt enthalten sein muss.

+2

Eine Access-Abfrage ist keine gespeicherte Prozedur, es ist wie eine Ansicht. Sie müssen die obige Anweisung mit dem Rest in eine SELECT-Anweisung integrieren. – Andre

Antwort

1

In Access müssen Sie die Parameter @ nicht als Präfix verwenden. Parameter werden als jede Spalte abgeleitet, die nicht aufgelöst werden kann. Wenn Ihre Tabelle also keine Spalte date enthält, reicht die Verwendung von date aus, um einen Parameter zu deklarieren. Aber vielleicht so etwas wie p_date kann es vom Datentyp trennen DATETIME/DATE

Ich weiß nicht, was genau mit Ihnen dies erwarten

FORMAT(LastUpdated, "yyyy-mm-dd") AS @Date 

Es scheint, als zu versuchen, einen Alias ​​FORMAT(LastUpdated, "yyyy-mm-dd") zuweisen der Parameterwert von @Date?

Eine Access-Abfrage kann nicht mehrere Ergebnismengen zurückgeben, so dass Ihre SELECT @Date; letztlich ist, was die "Zeichen nach Ende der SQL-Anweisung gefunden" verursacht. Fehlermeldung.