Discussion:
[Access 2010 SP2] ODBC-Treiber
(zu alt für eine Antwort)
Lars P. Wolschner
2013-10-31 20:11:09 UTC
Permalink
Hallo zusammen,

meine MS Occice 2010 SP2-Installation (untrer Windows 7 mit allen
Patches) kann keine Tabellen mehr verknüpfen.

Im "ODBC-Datenquellen-Administrator" zeigt der Treiber "Microsoft
Access Driver (*.mdb, *.accdb)" und auch alle anderen Einträge
Fehler: "Die Setup-Routinen für den ... ODBC-Treiber konnten nicht
gefunden werden. Installieren Sie den Treiber erneut." Wenn man diese
Meldung schließt, erscheint die nächste Box mit der Meldung "Fehler
gefunden: Der angegebene DSN weist eine nicht übereinstimmende
Architektur von Treiber und Anwendung auf."

Wie kann man die ODBC-Treiber wieder in Ordnung bringen?

Schon jetzt vielen Dank für Eure Hinweise
--
mit freundlichen Grüßen
Lars P. Wolschner
Winfried Sonntag
2013-10-31 20:27:38 UTC
Permalink
Post by Lars P. Wolschner
meine MS Occice 2010 SP2-Installation (untrer Windows 7 mit allen
Patches) kann keine Tabellen mehr verknüpfen.
Im "ODBC-Datenquellen-Administrator" zeigt der Treiber "Microsoft
Access Driver (*.mdb, *.accdb)" und auch alle anderen Einträge
Fehler: "Die Setup-Routinen für den ... ODBC-Treiber konnten nicht
gefunden werden. Installieren Sie den Treiber erneut." Wenn man diese
Meldung schließt, erscheint die nächste Box mit der Meldung "Fehler
gefunden: Der angegebene DSN weist eine nicht übereinstimmende
Architektur von Treiber und Anwendung auf."
Hilft dir dieser Artikel? http://support.microsoft.com/kb/942976/de
Reparatur von Access schon probiert? Oder dieses Paket downloaden und
installieren:
http://www.microsoft.com/de-de/download/details.aspx?id=13255

Servus
Winfried
--
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
Access-Stammtisch: http://www.access-muenchen.de
Lars P. Wolschner
2013-10-31 21:10:12 UTC
Permalink
Post by Winfried Sonntag
Post by Lars P. Wolschner
meine MS Occice 2010 SP2-Installation (untrer Windows 7 mit
allen Patches) kann keine Tabellen mehr verknüpfen.
Im "ODBC-Datenquellen-Administrator" zeigt der Treiber
"Microsoft Access Driver (*.mdb, *.accdb)" und auch alle
anderen Einträge Fehler: "Die Setup-Routinen für den ...
ODBC-Treiber konnten nicht gefunden werden. Installieren Sie
den Treiber erneut." Wenn man diese Meldung schließt, erscheint
die nächste Box mit der Meldung "Fehler gefunden: Der
angegebene DSN weist eine nicht übereinstimmende Architektur
von Treiber und Anwendung auf."
Hilft dir dieser Artikel?
http://support.microsoft.com/kb/942976/de Reparatur von Access
schon probiert?
Na gut, wenn ich die odbcad32.exe aus SysWOW64 starte, scheint
alles in Ordnung zu sein. Trotzdem kann mein Access keine Tabellen
einbinden.

Nun ist das qua ADO ohnehin nicht mehr meine Methode, nur
funktionieren dadurch auch die verbindungsübergreifenden Abfragen
der Jet-Enginge nicht, bei denen für jede "auswärtige" Tabelle ein
ODBC-String in der Abfrage angegeben werden kann. Tabellen auf
einem MS SQL Server werden so zwar erreicht, aber die in externen
Daten-MDBs dagegen nicht.
Post by Winfried Sonntag
http://www.microsoft.com/de-de/download/details.aspx?id=13255
Das habe ich schon probiert. Dem zuerst von Dir genannten Artikel
zufolge scheint meine Installation aber gar nicht defekt zu sein,
sondern es 32- und 64-bittige Treiber kommen durcheinander. Eine
Lösung hat Microsoft dafür nicht.
--
Mit freundlichen Grüßen
Lars P. Wolschner
Ulrich Möller
2013-11-01 12:26:38 UTC
Permalink
Post by Lars P. Wolschner
Post by Winfried Sonntag
Post by Lars P. Wolschner
meine MS Occice 2010 SP2-Installation (untrer Windows 7 mit
allen Patches) kann keine Tabellen mehr verknüpfen.
Im "ODBC-Datenquellen-Administrator" zeigt der Treiber
"Microsoft Access Driver (*.mdb, *.accdb)" und auch alle
anderen Einträge Fehler: "Die Setup-Routinen für den ...
ODBC-Treiber konnten nicht gefunden werden. Installieren Sie
den Treiber erneut." Wenn man diese Meldung schließt, erscheint
die nächste Box mit der Meldung "Fehler gefunden: Der
angegebene DSN weist eine nicht übereinstimmende Architektur
von Treiber und Anwendung auf."
Hilft dir dieser Artikel?
http://support.microsoft.com/kb/942976/de Reparatur von Access
schon probiert?
Na gut, wenn ich die odbcad32.exe aus SysWOW64 starte, scheint
alles in Ordnung zu sein. Trotzdem kann mein Access keine Tabellen
einbinden.
Nun ist das qua ADO ohnehin nicht mehr meine Methode, nur
funktionieren dadurch auch die verbindungsübergreifenden Abfragen
der Jet-Enginge nicht, bei denen für jede "auswärtige" Tabelle ein
ODBC-String in der Abfrage angegeben werden kann. Tabellen auf
einem MS SQL Server werden so zwar erreicht, aber die in externen
Daten-MDBs dagegen nicht.
Post by Winfried Sonntag
http://www.microsoft.com/de-de/download/details.aspx?id=13255
Das habe ich schon probiert. Dem zuerst von Dir genannten Artikel
zufolge scheint meine Installation aber gar nicht defekt zu sein,
sondern es 32- und 64-bittige Treiber kommen durcheinander. Eine
Lösung hat Microsoft dafür nicht.
Hallo Lars,

32Bit und 64Bit Office Installationen dürfen lt. MS nicht auf einer
Maschine gemischt sein! Alles 32Bit oder alles 64Bit - da muß man sich
entscheiden.

Kontrolliere einmal die Registry-Einträge für ODBC, ob dort alles
richtig vom ODBC-Administrator eingetragen wurde.
Je nach DSN-Typ stehen die entweder unter HKLM/Software/ODBC oder
HKCU/Software/ODBC. Für 32Bit Anwendungen dann analog unter z.B.
HKLM/Software/Wow6432Node/ODBC ...
Unter dem Schlüssel ODBC.INI/[ODBC Data Sources] gibt es die
registrierten DSN-Einträge und direkt unter ODBC.INI mit dem jeweiligen
DSN-Eintrag die speziellen Parameter. Hier sollte mit dem Eintrag
[Driver] immer auf die korrekte Treiber.dll verwiesen werden. Besonders
die Pfadangabe muß stimmen (64/32Bit) !

Hier ein kleiner Auszug aus dem MS Data Access SDK/ODBC als Beispiel für
eine 64Bit Benutzer-DSN Umgebung:

Suppose a user has three user data sources: Personnel and Inventory,
which use an Oracle DBMS; and Payroll, which uses a Microsoft SQL Server
DBMS. The registry values for data sources might be:

HKEY_CURRENT_USER
SOFTWARE
ODBC
Odbc.ini
ODBC Data Sources
Personnel : REG_SZ : Oracle
Inventory : REG_SZ : Oracle
Payroll : REG_SZ : SQL Server

and the registry values for the Payroll data source might be:

HKEY_CURRENT_USER
SOFTWARE
ODBC
Odbc.ini
Payroll
Driver : REG_SZ : C:\WINDOWS\SYSTEM\Sqlsrvr.dll
Description : REG_SZ : Payroll database
Server : REG_SZ : PYRLL1
FastConnectOption : REG_SZ : No
UseProcForPrepare : REG_SZ : Yes
OEMTOANSI : REG_SZ : No
LastUser : REG_SZ : smithjo
Database : REG_SZ : Payroll
Language : REG_SZ :

Das Beispiel ist zwar etwas älter, sieht aber unter Windows 7 im Prinzip
immer noch so aus.

Ulrich
Lars P. Wolschner
2013-11-01 16:02:13 UTC
Permalink
Post by Ulrich Möller
32Bit und 64Bit Office Installationen dürfen lt. MS nicht auf
einer Maschine gemischt sein! Alles 32Bit oder alles 64Bit - da
muß man sich entscheiden.
Das ist mir bekannt und ich habe auch nie eine 64-bittige Version von
Office installiert. Microsoft selbst riet seinerzeit davon ab.
Windows 7 habe ich 64-bittig installiert.
Post by Ulrich Möller
Kontrolliere einmal die Registry-Einträge für ODBC, ob dort
alles richtig vom ODBC-Administrator eingetragen wurde.
Je nach DSN-Typ stehen die entweder unter HKLM/Software/ODBC
oder HKCU/Software/ODBC. Für 32Bit Anwendungen dann analog unter
z.B. HKLM/Software/Wow6432Node/ODBC ...
Unter dem Schlüssel ODBC.INI/[ODBC Data Sources] gibt es die
registrierten DSN-Einträge und direkt unter ODBC.INI mit dem
jeweiligen DSN-Eintrag die speziellen Parameter.
Unter HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI (der für
mich anscheinend relevante Ort) steht bei mir nichts. Der Wert
"Driver" in HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI
\Microsoft Access Driver (*.mdb, *.accdb) lautet
C:\PROGRA~2\COMMON~1\MICROS~1\OFFICE14\ACEODBC.DLL. Sofern das im
Pfad "C:\Programme (x86)" liegt, ist diese Datei auch vorhanden.

Der Wert "Driver" in HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC
\ODBCINST.INI\Microsoft Access Driver (*.mdb) lautet %WINDIR%
\system32\odbcjt32.dll, auch diese Datei existiert. Oder müßte hier %
WINDIR%\SysWOW64\odbcjt32.dll stehen?
--
Mit freundlichen Grüßen
Lars P. Wolschner
Ulrich Möller
2013-11-01 16:38:34 UTC
Permalink
Am 01.11.2013 17:02, schrieb Lars P. Wolschner:

snip...
Post by Lars P. Wolschner
Unter HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI (der für
mich anscheinend relevante Ort) steht bei mir nichts. Der Wert
"Driver" in HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI
\Microsoft Access Driver (*.mdb, *.accdb) lautet
C:\PROGRA~2\COMMON~1\MICROS~1\OFFICE14\ACEODBC.DLL. Sofern das im
Pfad "C:\Programme (x86)" liegt, ist diese Datei auch vorhanden.
Der Wert "Driver" in HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC
\ODBCINST.INI\Microsoft Access Driver (*.mdb) lautet %WINDIR%
\system32\odbcjt32.dll, auch diese Datei existiert. Oder müßte hier %
WINDIR%\SysWOW64\odbcjt32.dll stehen?
snip...

Wenn bei dir unter
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\ODBC Data
Sources]nichts steht, wurde auch noch keine ODBC-Datenquelle mit
"C:\%windir%\SysWOW46\odbcad32.exe" eingerichtet.

Die beiden Einträge sind schon korrekt. Wichtiger sind die Einträge
unter [ODBC.INI]. Dort stehen die definierten Datenquellen und dort
sollte dann auch der richtige Treiber stehen.

Hier ein Beispiel für eine komplette Definition einer
ODBC-Systemdatenquelle, wie sie bei mir mit Win7_64/ACC2010_32 benutzt
wird:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\ODBC Data Sources]
"PANDA_BE"="Microsoft Access Driver (*.mdb, *.accdb)"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\PANDA_BE]
"Driver"="C:\\PROGRA~2\\COMMON~1\\MICROS~1\\OFFICE14\\ACEODBC.DLL"
"DBQ"="E:\\pmedbe.mdb"
"Description"="Backend"
"DriverId"=dword:00000019
"Exclusive"=hex:00
"FIL"="MS Access;"
"PWD"=""
"ReadOnly"=hex:00
"SafeTransactions"=dword:00000000
"UID"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\PANDA_BE\Engines]

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\PANDA_BE\Engines\Jet]
"ImplicitCommitSync"=""
"MaxBufferSize"=dword:00000800
"PageTimeout"=dword:00000005
"Threads"=dword:00000003
"UserCommitSync"="Yes"

Diese Eintrag funktioniert bei mir und wird auch für
ODBC-Testverbindungen mit Open/LibreOffice verwendet.
Für Access-Anwendungen würde ich aber auf DSN-less bzw. OLE-DB umstellen.

Ulrich
Lars P. Wolschner
2013-11-01 18:05:35 UTC
Permalink
Post by Ulrich Möller
Post by Lars P. Wolschner
Unter HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI
(der für mich anscheinend relevante Ort) steht bei mir nichts.
Der Wert "Driver" in
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI
\Microsoft Access Driver (*.mdb, *.accdb) lautet
C:\PROGRA~2\COMMON~1\MICROS~1\OFFICE14\ACEODBC.DLL. Sofern das
im Pfad "C:\Programme (x86)" liegt, ist diese Datei auch
vorhanden.
Der Wert "Driver" in
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC
\ODBCINST.INI\Microsoft Access Driver (*.mdb) lautet %WINDIR%
\system32\odbcjt32.dll, auch diese Datei existiert. Oder müßte
hier % WINDIR%\SysWOW64\odbcjt32.dll stehen?
Hier ein Beispiel für eine komplette Definition einer
ODBC-Systemdatenquelle, wie sie bei mir mit Win7_64/ACC2010_32
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\ODBC Data
Sources] "PANDA_BE"="Microsoft Access Driver (*.mdb, *.accdb)"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\PANDA_BE]
"Driver"="C:\\PROGRA~2\\COMMON~1\\MICROS~1\\OFFICE14
\\ACEODBC.DLL
Post by Ulrich Möller
" "DBQ"="E:\\pmedbe.mdb"
"Description"="Backend"
"DriverId"=dword:00000019
"Exclusive"=hex:00
"FIL"="MS Access;"
"PWD"=""
"ReadOnly"=hex:00
"SafeTransactions"=dword:00000000
"UID"=""
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\PANDA_BE
\E
Post by Ulrich Möller
ngines]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\PANDA_BE
\E
Post by Ulrich Möller
ngines\Jet] "ImplicitCommitSync"=""
"MaxBufferSize"=dword:00000800
"PageTimeout"=dword:00000005
"Threads"=dword:00000003
"UserCommitSync"="Yes"
Diese Eintrag funktioniert bei mir und wird auch für
ODBC-Testverbindungen mit Open/LibreOffice verwendet.
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\MS Access Database]
"UID"=""
"SafeTransactions"=dword:00000000
"DriverId"=dword:00000019
"Driver"="C:\\PROGRA~2\\COMMON~1\\MICROS~1\\OFFICE14\\ACEODBC.DLL"

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\MS Access Database
\Engines]

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\MS Access Database
\Engines\Jet]
"UserCommitSync"="Yes"
"Threads"=dword:00000003
"ImplicitCommitSync"=""

und

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
"dBASE Files"="Microsoft Access dBASE Driver (*.dbf, *.ndx,
*.mdx)"
"Excel Files"="Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm,
*.xlsb)"
"MS Access Database"="Microsoft Access Driver (*.mdb, *.accdb)"
"SQL Server Native Client"="SQL Server Native Client 10.0"
"Test"="SQL Server Native Client 10.0"
"MS Access"="Microsoft Access Driver (*.mdb, *.accdb)"

finde ich bei mir.
Post by Ulrich Möller
Für Access-Anwendungen würde ich aber auf DSN-less bzw. OLE-DB umstellen.
Wie gesagt: Normalerweise wird mit einem MS SQL Server über OLEDB
und ADODB.Connections gearbeitet, auch Daten-MDBs werden so
genutzt; verknüpfte Tabellen gibt es nicht mehr. Nur bei Abfragen
über Tabellen aus mehreren Connections kann MS Access nichts
anderes als ODBC. Nur dafür ist das für mich relevant.
--
Mit freundlichen Grüßen
Lars P. Wolschner
Ulrich Möller
2013-11-01 20:16:59 UTC
Permalink
Post by Ulrich Möller
Post by Ulrich Möller
Post by Lars P. Wolschner
Unter HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI
(der für mich anscheinend relevante Ort) steht bei mir nichts.
Der Wert "Driver" in
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI
\Microsoft Access Driver (*.mdb, *.accdb) lautet
C:\PROGRA~2\COMMON~1\MICROS~1\OFFICE14\ACEODBC.DLL. Sofern das
im Pfad "C:\Programme (x86)" liegt, ist diese Datei auch
vorhanden.
Der Wert "Driver" in
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC
\ODBCINST.INI\Microsoft Access Driver (*.mdb) lautet %WINDIR%
\system32\odbcjt32.dll, auch diese Datei existiert. Oder müßte
hier % WINDIR%\SysWOW64\odbcjt32.dll stehen?
Hier ein Beispiel für eine komplette Definition einer
ODBC-Systemdatenquelle, wie sie bei mir mit Win7_64/ACC2010_32
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\ODBC Data
Sources] "PANDA_BE"="Microsoft Access Driver (*.mdb, *.accdb)"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\PANDA_BE]
"Driver"="C:\\PROGRA~2\\COMMON~1\\MICROS~1\\OFFICE14
\\ACEODBC.DLL
Post by Ulrich Möller
" "DBQ"="E:\\pmedbe.mdb"
"Description"="Backend"
"DriverId"=dword:00000019
"Exclusive"=hex:00
"FIL"="MS Access;"
"PWD"=""
"ReadOnly"=hex:00
"SafeTransactions"=dword:00000000
"UID"=""
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\PANDA_BE
\E
Post by Ulrich Möller
ngines]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\PANDA_BE
\E
Post by Ulrich Möller
ngines\Jet] "ImplicitCommitSync"=""
"MaxBufferSize"=dword:00000800
"PageTimeout"=dword:00000005
"Threads"=dword:00000003
"UserCommitSync"="Yes"
Diese Eintrag funktioniert bei mir und wird auch für
ODBC-Testverbindungen mit Open/LibreOffice verwendet.
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\MS Access Database]
"UID"=""
"SafeTransactions"=dword:00000000
"DriverId"=dword:00000019
"Driver"="C:\\PROGRA~2\\COMMON~1\\MICROS~1\\OFFICE14\\ACEODBC.DLL"
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\MS Access Database
\Engines]
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\MS Access Database
\Engines\Jet]
"UserCommitSync"="Yes"
"Threads"=dword:00000003
"ImplicitCommitSync"=""
und
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
"dBASE Files"="Microsoft Access dBASE Driver (*.dbf, *.ndx,
*.mdx)"
"Excel Files"="Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm,
*.xlsb)"
"MS Access Database"="Microsoft Access Driver (*.mdb, *.accdb)"
"SQL Server Native Client"="SQL Server Native Client 10.0"
"Test"="SQL Server Native Client 10.0"
"MS Access"="Microsoft Access Driver (*.mdb, *.accdb)"
finde ich bei mir.
Post by Ulrich Möller
Für Access-Anwendungen würde ich aber auf DSN-less bzw. OLE-DB umstellen.
Wie gesagt: Normalerweise wird mit einem MS SQL Server über OLEDB
und ADODB.Connections gearbeitet, auch Daten-MDBs werden so
genutzt; verknüpfte Tabellen gibt es nicht mehr. Nur bei Abfragen
über Tabellen aus mehreren Connections kann MS Access nichts
anderes als ODBC. Nur dafür ist das für mich relevant.
Damit sollte es aber im Prinzip auch schon gehen, sofern im
Connectionstring die Properties für DBQ und FIL mitgegeben werden.
Probleme hatte ich in aber schon mal mit User-DSNs. Vielleicht kann man
mal probeweise System-DSNs ausprobieren.

Ulrich
Ulrich Möller
2013-11-01 21:34:54 UTC
Permalink
Post by Lars P. Wolschner
Wie gesagt: Normalerweise wird mit einem MS SQL Server über OLEDB
und ADODB.Connections gearbeitet, auch Daten-MDBs werden so
genutzt; verknüpfte Tabellen gibt es nicht mehr. Nur bei Abfragen
über Tabellen aus mehreren Connections kann MS Access nichts
anderes als ODBC. Nur dafür ist das für mich relevant.
Habe ich zwar noch nie gebraucht, aber ein kurzer Test mit Jet-SQL hat
bei mir sehr wohl ohne ODBC funktioniert.

SELECT T1.*
FROM [E:\Projekte\Lang\DB\nwind2000.mdb].Orders AS T1
LEFT JOIN [E:\Projekte\Lang\DB\nwind.mdb].Orders AS T2
ON T1.CustomerID = T2.CustomerID;

Ulrich
Lars P. Wolschner
2013-11-02 04:52:23 UTC
Permalink
Post by Ulrich Möller
Post by Lars P. Wolschner
Wie gesagt: Normalerweise wird mit einem MS SQL Server über
OLEDB und ADODB.Connections gearbeitet, auch Daten-MDBs werden
so genutzt; verknüpfte Tabellen gibt es nicht mehr. Nur bei
Abfragen über Tabellen aus mehreren Connections kann MS Access
nichts anderes als ODBC. Nur dafür ist das für mich relevant.
Habe ich zwar noch nie gebraucht, aber ein kurzer Test mit
Jet-SQL hat bei mir sehr wohl ohne ODBC funktioniert.
SELECT T1.*
FROM [E:\Projekte\Lang\DB\nwind2000.mdb].Orders AS T1
LEFT JOIN [E:\Projekte\Lang\DB\nwind.mdb].Orders AS T2
ON T1.CustomerID = T2.CustomerID;
mmmpf. Vielen Dank für Deine Mühe und Geduld, auch an die anderen in
diesem Thread. So funktioniert es bei mir auch und ich lasse mein
Framework das in dieser Form mit dem geklammerten Dateinamen ohne
weitere Angaben erzeugen.

Aber werkelt da nicht nach wie vor nur ODBC?
--
Mit freundlichen Grüßen
Lars P. Wolschner
Peter Doering
2013-11-02 09:53:38 UTC
Permalink
Hallo,
Post by Lars P. Wolschner
Post by Ulrich Möller
SELECT T1.*
FROM [E:\Projekte\Lang\DB\nwind2000.mdb].Orders AS T1
LEFT JOIN [E:\Projekte\Lang\DB\nwind.mdb].Orders AS T2
ON T1.CustomerID = T2.CustomerID;
mmmpf. Vielen Dank für Deine Mühe und Geduld, auch an die anderen in
diesem Thread. So funktioniert es bei mir auch und ich lasse mein
Framework das in dieser Form mit dem geklammerten Dateinamen ohne
weitere Angaben erzeugen.
Aber werkelt da nicht nach wie vor nur ODBC?
Ich hab nicht den ganzen Thread nachgelesen, aber Access zu Jet(ACE) per
ODBC geht nicht, das geht nur von Anwendungen <> Access. Gerade unter 2010
getestet: "You cannot use ODBC to import from, export to, or link an
external Microsoft Access or ISAM database table to your database."

Gruss - Peter
--
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Ulrich Möller
2013-11-02 12:26:11 UTC
Permalink
Post by Peter Doering
Hallo,
Post by Lars P. Wolschner
Post by Ulrich Möller
SELECT T1.*
FROM [E:\Projekte\Lang\DB\nwind2000.mdb].Orders AS T1
LEFT JOIN [E:\Projekte\Lang\DB\nwind.mdb].Orders AS T2
ON T1.CustomerID = T2.CustomerID;
mmmpf. Vielen Dank für Deine Mühe und Geduld, auch an die anderen in
diesem Thread. So funktioniert es bei mir auch und ich lasse mein
Framework das in dieser Form mit dem geklammerten Dateinamen ohne
weitere Angaben erzeugen.
Aber werkelt da nicht nach wie vor nur ODBC?
Ich kann es nicht mit Bestimmtheit sagen, aber würde das auch vermuten,
zumal die Syntax z.B. für ISAM Zugriffe das nahe legt.
Aber wenn es so funktioniert, sollte das egal sein.
Leider ist sind solche Art Zugriffe aber relativ langsam und sollten
vielleicht die Ausnahme bleiben. Eine weitergehende Dokumentation für
diese Syntax habe ich nicht gefunden, sondern es wird immer nur auf den
IN-Operator verwiesen (from .... in).
Post by Peter Doering
Ich hab nicht den ganzen Thread nachgelesen, aber Access zu Jet(ACE) per
ODBC geht nicht, das geht nur von Anwendungen <> Access. Gerade unter 2010
getestet: "You cannot use ODBC to import from, export to, or link an
external Microsoft Access or ISAM database table to your database."
Gruss - Peter
Sollte man beim Anwendungsentwurf immer im Hinterkopf behalten!

Ulrich
Lars P. Wolschner
2013-11-02 13:58:02 UTC
Permalink
Post by Ulrich Möller
Post by Peter Doering
Post by Lars P. Wolschner
Post by Ulrich Möller
SELECT T1.*
FROM [E:\Projekte\Lang\DB\nwind2000.mdb].Orders AS T1
LEFT JOIN [E:\Projekte\Lang\DB\nwind.mdb].Orders AS T2
ON T1.CustomerID = T2.CustomerID;
mmmpf. Vielen Dank für Deine Mühe und Geduld, auch an die
anderen in diesem Thread. So funktioniert es bei mir auch und
ich lasse mein Framework das in dieser Form mit dem
geklammerten Dateinamen ohne weitere Angaben erzeugen.
Aber werkelt da nicht nach wie vor nur ODBC?
Leider ist sind solche Art Zugriffe aber relativ langsam und
sollten vielleicht die Ausnahme bleiben.
Das ist auch der Fall und findet überhaupt nur zu diagnostischen
Zwecken statt. Zu diagnostischen Zwecken können dann auch Access-
Abfragen erzeugt werden. Im normalen Ablauf wird das nicht mehr
benötigt. Geflechte aus einer Vielzahl voneinander abhängigen
Abfragen sind schwer wartbar.
Post by Ulrich Möller
Eine weitergehende Dokumentation für diese Syntax habe ich
nicht gefunden, sondern es wird immer nur auf den IN-Operator
verwiesen (from .... in).
Mit diesem Modifikator kann man AFAIR nur eine weitere externe
Datenquelle in der FROM-Klausel anzapfen. Die o.a. Notation
erlaubt dagegen für jede Tabelle eine andere Herkunft. Liegt die
Tabelle auf einem MS SQL-Server, muß der Name der Datenbank
("Katalog") im Connectstring in der eckigen Klammer im Database-
Attribut genannt werden, während der Schemabezeichner dem
Tabellennamen selbst voranzustellen ist und beide gemeinsam in
einer eckigen Klammer zusammenzufassen sind. Dabei ist dann auch
eine Alias-Deklaration Pflicht, weil sich dieses Paar aus Schema-
und Tabellenname nicht direkt an den übrigen Stellen des SQL-
Kommandos verwenden läßt.
Post by Ulrich Möller
Post by Peter Doering
Ich hab nicht den ganzen Thread nachgelesen, aber Access zu
Jet(ACE) per ODBC geht nicht, das geht nur von Anwendungen <>
Access. Gerade unter 2010 getestet: "You cannot use ODBC to
import from, export to, or link an external Microsoft Access or
ISAM database table to your database."
Stellt man per DAO eine Verbindung zu einem MS SQL Server-Katalog
her, findet man die Tabellennamen sämtlich mit dem Namen des
Schemas qualifiziert, zu dem sie gehören. Weil die o.a. Notation
in der FROM-Klausel das auch so fordert, kam ich auf den Gedanken.

Das habe ich aber nur aus Neugierde gemacht, ich nutze DAO fast
gar nicht mehr; meine ADO-Codebasis ist der für DAO mittlerweile
überlegen. Microsoft verweist zur Erzeugung von Access-Abfrage-
Objekten auf DAO, obwohl sich solche Objekte auch per ADOX anlegen
lassen. Der Unterschied: Per DAO angelegte Abfrageobjekte sind
bereits nach dem Neuaufbau der Anzeige im Datenbankfenster
sichtbar, per ADOX angelegte dagegen erst nach dem nächsten
Access-Neustart.
Post by Ulrich Möller
Sollte man beim Anwendungsentwurf immer im Hinterkopf behalten!
Verbindungsorientiert mit ADO und mit meinem Framwork geht es sehr
gut, Tabellen außerhalb eines MS SQL- oder Oracle-Server sind die
Ausnahme. Zumal ich auch die feldbezogenen Informationen aus dem
Datenbankschema nutze und dabei auch per VBA ADO-basiert sehr viel
performanter arbeite als per DAO mit verknüpften Tabellen.
--
Mit freundlichen Grüßen
Lars P. Wolschner
Lesen Sie weiter auf narkive:
Loading...