Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Using SQL Server Native Client 11.0 driver
Message
De
14/10/2020 04:44:49
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Client/serveur
Divers
Thread ID:
01676553
Message ID:
01676643
Vues:
38
>Antonio,
>Thank you for your reply. I did try parameter 6 and get the DLL name. But I prefer the version number (even in an abbreviated form) since it will tell me much more.
>Thank you very much!
>
>>Dmitry, that's the info you'll get from the driver (you can also try the InfoType parameter set to 6, this will give you the name of the driver's filename). Other info that might interest you would probably come from the driver registry's deployment information.
>>

Dimitry, I knew I had something getting more info about ODBC drivers around here somewhere, so here it is. Hope it helps with your requirements:
#DEFINE HKEY_LOCAL_MACHINE	0x80000002
#DEFINE ODBC_DRIVERS			"SOFTWARE\ODBC\ODBCINST.INI"

SET CLASSLIB TO (HOME(1) + "FFC\registry") ADDITIVE

LOCAL Reg AS registry

m.Reg = CREATEOBJECT("registry")

LOCAL ARRAY Entries(1)

m.Reg.openkey(ODBC_DRIVERS,HKEY_LOCAL_MACHINE,.F.)
m.Reg.enumkeys(@m.Entries)
m.Reg.closekey()

LOCAL Driver AS String
LOCAL kValue AS String
LOCAL Drivers AS Integer

LOCAL ARRAY InstalledDrivers(1, 4)

m.Drivers = 0

FOR EACH m.Driver IN m.Entries

	m.Reg.openkey(ODBC_DRIVERS + "\" + m.Driver,HKEY_LOCAL_MACHINE, .F.)

	IF m.Reg.getkeyvalue("Driver", @m.kValue) = 0

		m.Drivers = m.Drivers + 1
		DIMENSION m.InstalledDrivers(m.Drivers, 4)

		m.InstalledDrivers(m.Drivers, 1) = m.Driver

		IF m.Reg.getkeyvalue("DriverODBCVer", @m.kValue) = 0
			m.InstalledDrivers(m.Drivers, 2) = m.kValue
		ELSE
			m.InstalledDrivers(m.Drivers, 2) = ""
		ENDIF

		IF m.Reg.getkeyvalue("Driver", @m.kValue) = 0
			IF "%" $ m.kValue
				m.kValue = STRTRAN(m.kValue, STREXTRACT(m.kValue, "%", "%", 1, 4), GETENV(STREXTRACT(m.kValue, "%", "%")))
			ENDIF
			m.InstalledDrivers(m.Drivers, 3) = m.kValue
			m.InstalledDrivers(m.Drivers, 4) = FDATE(m.kValue)
		ELSE
			m.InstalledDrivers(m.Drivers, 3) = ""
			m.InstalledDrivers(m.Drivers, 4) = {}
		ENDIF

	ENDIF

	m.Reg.closekey()
ENDFOR

* For displaying purposes...

CLEAR

FOR m.Drivers = 1 TO ALEN(m.InstalledDrivers, 1)
	? m.InstalledDrivers(m.Drivers, 1), ;
		"/ Version:", m.InstalledDrivers(m.Drivers, 2), ;
		"/ File:", m.InstalledDrivers(m.Drivers, 3), ;
		"/ Date:", m.InstalledDrivers(m.Drivers, 4)
ENDFOR
Note: the version stated in this list may refer to the ODBC version, not the driver's version. Use the SQLGetInfo to get the driver's version.
----------------------------------
António Tavares Lopes
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform