Title: Determine ADO and DAO Versions installed
Question: Function to determine the highest version of DAO installed on the machine. If no DAO is installed then 0.0 is returned. Typical return values are 3.5 or 3.6 for DAO v3.5 and v3.6.
Function to return the current version of ADO installed. A typical return value is 2.7. If ADO is not available then 0.0 is retuened.
Both functions also support a String result function as well.
function GetDaoVersion : double;
function GetDaoVersionStr : string;
function GetAdoVersion : double;
function GetAdoVersionStr : string;
Answer:
// Add to uses clause
uses Math,ComObj;
// ======================================
// Get Highest DAO ver installed
// ======================================
function GetDaoVersion : double;
var sPath : string;
iError,iResult : integer;
rDirInfo : TSearchRec;
begin
iResult := 0;
sPath := ExtractFileDrive(WindowsDir) +
'\Program Files\Common Files\' +
'Microsoft Shared\DAO\dao*.dll';
// Loop thru to find the MAX DLL version on disk
iError := FindFirst(sPath,faAnyFile,rDirInfo);
while iError = 0 do begin
iResult := Max(iResult,StrToIntDef(copy(rDirInfo.Name,4,3),0));
iError := FindNext(rDirInfo);
if iError 0 then FindClose(rDirInfo);
end;
Result := (iResult / 100.0);
end;
function GetDaoVersionStr : string;
begin
Result := FormatFloat('##0.00',GetDaoVersion);
end;
// =====================
// Get ADO Version
// =====================
function GetAdoVersion : double;
var oADO: OLEVariant;
begin
try
oADO := CreateOLEObject('adodb.connection');
Result := StrToFloat(oADO.Version);
oADO := Unassigned;
except
Result := 0.0;
end;
end;
function GetAdoVersionStr : string;
begin
Result := FormatFloat('##0.00',GetAdoVersion);
end;