Mit Delphi 7 mit ADO-Objekten ist es möglich, den ODBC-Datenbanktreiber aus dem TADOConnection-Objekt zu ermitteln? So erkennen, ob es MS-Access oder SQL Server oder Oracle usw.ODBC-Datenbanktreiber vom TADOConnection-Objekt ermitteln?
ist das Programm eine Verbindung zu einer Datenbank, indem Sie einfach den Namen einer ODBC-Datenquelle verwendet wird, und ich möchte, um zu bestimmen, ob diese Datenbank eine MS-Access-Datenbank oder SQL Server. Ich möchte dies tun, weil MS-Access und SQL Server unterschiedliche SQL-Funktionsnamen verwenden, um eine Ganzzahl in eine Zeichenfolge umzuwandeln.
Die Anwendung erstellt eine SQL-Zeichenfolge, die die VERSION einiger Konfigurationsobjekte abruft. Es funktioniert für SQL Server mit cast()
, aber ich mag auch MS-Access unterstützen, die CStr()
verwendet:
SELECT NAME + '_' + CAST(VERSION as varchar) as OBJECT_NAME FROM ANALYSIS // SQL Server
SELECT NAME + '_' + CStr(VERSION) as OBJECT_NAME FROM ANALYSIS // MS-Access
Ich habe an dem TADOConnection.Provider versuchte, Blick, aber das ist MSDASQL.1
in beiden Fällen.
if (myqry.Connection.Provider = 'MSDASQL.1') then
strSQL := strSQL + 'cast(' + myfieldname + ' as varchar)' // always goes here..
else
strSQL := strSQL + 'CStr(' + myfieldname + ')'; // ..never to here
Ich habe an allen TADOConnection Eigenschaften gesucht, aber ich fange an, es ist nicht möglich, zu vermuten. Irgendwelche Ideen, wie man das löst?