Hallo,
ich habe eine alte Anwendung, wo mit
Access als Frontend auf ein
MSSQL-Server Backend zugegriffen wird (Tabellen in
Access verknüpft). Dabei macht mir eine Abfrage, die einer
Access-Listbox als "Row-Source" zugewiesen wird, Probleme.
SQL-Code:
Select Distinctrow
T.ID, T.Name,
(Select Max(Testdatum) From Testreihen where Testid=T.ID) as LastTestDate
From Test T
Where T.Status=1
and (Select Max(Testdatum) From Testreihen where Testid=T.ID) >= Datevalue('07.10.2014')
Diese Abfrage läuft in
Access super lange (Minuten) und liefert richtigerweise nur einen Datensatz zurück. Lasse ich die Zeile mit LastTestDate aus der Ergebnismenge weg (im Where lass ich die Bedingung aber drin) ist die Abfrage blitzschnell (< 1 sek.).
Die selbe Abfrage leicht angepasst (s.u.) direkt über ein
SQL-Tool an den MSServer geschickt liefert in beiden Varianten blitzschnell das Ergebnis.
SQL-Code:
Select Distinct
T.ID, T.Name,
(Select Max(Testdatum) From Testreihen where Testid=T.ID) as LastTestDate
From Test T
Where T.Status=1
and (Select Max(Testdatum) From Testreihen where Testid=T.ID) >= Conver(Dattime,'07.10.2014',104)
Woran kann das bei dem Zugriff mit
Access liegen, dass es da in dem einem Fall so langsam ist? Hohl sich
Access da erstmal alle Datensätze und rüdelt dann da selber rum?