次のクエリを使用して、テーブルの最後と次の行を取得しようとしました。
SELECT TOP 1 Nummer FROM Empfänger WHERE Nummer < 4748 ORDER BY Nummer DESC
UNION
SELECT TOP 2 Nummer FROM Empfänger WHERE Nummer >= 4748 ORDER BY Nummer ASC;
主キー「Nummer」は一意で自動インクリメンタルなので、
4747, 4748, 4749
上記の数値を返す必要がありますが、代わりに次を返します。
4747, 4798, 4799
Access でデータベースを開いてフィルターを「間」に設定すると、値が正しく表示されます。
ステートメントを次のように変更しました。
SELECT DISTINCT TOP 1 Nummer FROM Empfänger WHERE Nummer < 4748 ORDER BY Nummer DESC
UNION
SELECT DISTINCT Nummer FROM Empfänger WHERE Nummer = 4748
UNION
SELECT DISTINCT TOP 1 Nummer FROM Empfänger WHERE Nummer > 4748 ORDER BY Nummer ASC;
これはほぼ完璧に機能します。
4747, 4748, 4750
単一のクエリですべてのステートメントを記述すると、正しい値が返されます...
SELECT DISTINCT TOP 1 Nummer FROM Empfänger WHERE Nummer < 4748 ORDER BY Nummer DESC
= 4747
SELECT DISTINCT Nummer FROM Empfänger WHERE Nummer = 4748
= 4748
SELECT DISTINCT TOP 1 Nummer FROM Empfänger WHERE Nummer > 4748 ORDER BY Nummer ASC;
= 4749
\
SELECT DISTINCT TOP 1 Nummer FROM Empfänger WHERE Nummer < 4750 ORDER BY Nummer DESC
UNION
SELECT DISTINCT Nummer FROM Empfänger WHERE Nummer = 4750
UNION
SELECT DISTINCT TOP 1 Nummer FROM Empfänger WHERE Nummer > 4750 ORDER BY Nummer ASC;
もう一度確認したところ、突然、上記のクエリが機能しました。ご協力ありがとうございました。