Extreme Veteran
Beiträge: 566
| Hallo,
Du hattest unterschlagen, dass du mit SQL Server als Backend arbeitest und, dass auch alphanumerische Zeichen vorkommen können. ;-)
SvenG - 25.07.17 09:40
geht leider auch nicht. er meckert, das er keine verknüofung mit einem memo, ole oder hyperlinkfeld erstellen kann.
Das stimmt natürlich. Wenn die Felder in der Backend-DB eine Länge von > 255 haben, werden sie in Access als Memo eingebunden und Memo-Felder kann man nicht in JOINs verwenden.
die felder "wertAlt" und "wertNeu" sind nvarchars in der sql-server db, weswegen ich sie in eine zahl konvertiere -denn diese beiden felder können in bestimmten fällen id´s enthalten (audit tabelle halt). ansonsten ist die abfrage ja logisch gesehen genau wie meine (klammerebenen). wie gesagt, ich hab auch im netz mehrere seiten gefunden, wo exakt die abfrage wie ich sie gepostet habe laufen sollte. andere sagen, das access genererell nicht mehrere left joins verarbeiten kann.
Letztere sind natürlich die "wahren" Spezialisten. ;-) Falls jemand mitliest und den Sarkasmus nicht auf Anhieb erkennt: Natürlich unterstützen die in Access verwendeten DB-Engines Jet und ACE sowohl LEFT als auch RIGHT JOINs. Was nicht unterstützt wird, sind CROSS JOINs und CROSS APPLYs.
ich hab mir jetzt eine view auf dem sql server erstellt und diese odbc-verknüpft in meine access-db eingebunden. fertig ist der lack.
Das ist der lokalen Abfrage natürlich vorzuziehen.
Sollte dich noch interessieren, warum es nicht funktioniert hat:
NVARCHAR-Felder am SQL Server können bis max 4000 Länge deklariert werden. Beim Verknüpfen in Access werden wie oben erwähnt Felder mit mehr als 255 Zeichen als Memo-Felder eingebunden, nicht nur NVARCHAR(MAX). Das zweite Problem wird wohl sein, dass CInt beim alphanumerischen Zeichen fehlschlägt. Den Fehler müsstest du behandeln. Bei meinem Vorschlag hätte das keine Rolle gespielt, weil CStr in die andere Richtung umwandelt.
----- Gruss - Peter |