Microsoft Access 2002-Projekte (ADP-Projekte) und Datenzugriffsseiten unterstützen ausschließlich den ANSI SQL-92-Standard. Dies hat Auswirkungen auf die Erstellung von Filterausdrücken und Abfragen in Access-Projekten. Auch Ergebnisdatensätze werden auf Datenzugriffsseiten anders dargestellt. Ältere Versionen von Access haben die ANSI SQL-89-Syntax unterstützt. Weitere Informationen zu den Unterschieden zwischen der ANSI SQL-89- und der ANSI SQL-92-Platzhaltersyntax finden Sie in der Hilfe zu Microsoft Access.
Filter und Abfragen in Access-Projekten
Mithilfe von Access-Projekten wird eine Verbindung zu Microsoft SQL Server- oder Microsoft SQL Server 2000 Desktop Engine- (früher MSDE-)Back-End-Datenbanken hergestellt. Standard Query Language (SQL - Standardabfragesprache) ist eine standardmäßige Interaktions- und Programmiersprache für relationale Datenbanken. Bei der Sprache Transact-SQL handelt es sich um einen nativen SQL-Dialekt, der sowohl von SQL Server als auch von Desktop Engine verwendet wird. Transact-SQL unterstützt ANSI SQL-92, den neuesten SQL-Standard. Bei Access 2002-Projekten, welche Abfragen oder Filterausdrücke anhand von SQL Server-Daten ausführen, muss dies in der ANSI SQL-92-Syntax der Fall sein.
Access-Datenbanken verwenden zum Vergleichen der Abfrage mit den nativen Daten die Microsoft Jet-Datenbankengine. Jet unterstützt den ANSI SQL-89-Standard (im Folgenden: Jet SQL-Syntax). Die Jet SQL-Syntax unterscheidet sich in mehrfacher Hinsicht vom ANSI SQL-92-Standard. So verwendet die Jet SQL-Syntax als Platzhalter für mehrere Zeichen beispielsweise das Sternchen (*), während die ANSI SQL-92-Syntax dafür das Prozentzeichen (%) verwendet.
Beispiel: Jet SQL-Syntax zum Zurückgeben aller Kunden eines Landes, das mit dem Buchstaben U beginnt:
SELECT * FROM Kunden WHERE Land LIKE 'U*'
ANSI SQL-92-Syntax zum Zurückgeben aller Kunden eines Landes, das mit dem Buchstaben U beginnt:
SELECT * FROM Kunden WHERE Land LIKE 'U%'
Auch die Filterausdrücke in Access 2002-Projekten verwenden den ANSI SQL-92-Standard. Wenn Sie Projekte aus älteren Access-Versionen nach Access 2002 verschieben möchten, überprüfen Sie, ob die einzelnen Ausdrücke die gewünschten Ergebnisse liefern.
Wenn ein Makroausdruck, z. B. nach Kundenname = 'B*' gesucht hat, werden nun nicht mehr alle Kunden gefunden, deren Name mit B beginnt, da das Sternchen (*) in ANSI SQL-92 kein Platzhalterzeichen ist. Um dies zu beheben, verändern Sie den Makroausdruck, und legen Sie als Platzhalterzeichen stattdessen das Prozentzeichen (%) fest: Kundenname = 'B%'.
Ergebnisdatensätze auf Datenzugriffsseiten
Die Microsoft Jet-Datenbankengine wird für Daten in Access-Datenbanken (MDB-Dateien) verwendet. Die Verknüpfung der Datenzugriffsseiten in Access-Datenbanken mit Jet erfolgt über ActiveX-Datenobjekte (ADO) und den Jet OLEDB-Provider. ADO und OLEDB verwenden immer die ANSI SQL-92-Syntax. Insofern müssen Datenzugriffsseiten ebenfalls die ANSI SQL-92-Syntax verwenden. Dies bedeutet, dass Formulare und Seiten, die mit derselben Abfrage verknüpft sind, unterschiedliche Ergebnisdatensätze zurückgeben können.