在網上找到好多貼子是關於使用 sqldmo.dll 來列舉局域網內SQLServer的。
我依照上面的抄了一份在 D7 下面測試切沒通過。
老是運行到 AStrings.Add(oServers.Item(i)) 這裡 拋出異常。
請大蝦們指點。
下面是原代碼:
// ====================================================
// Load SQL Servers on a Network into a string list
// ====================================================
function GetSQLServerList(AStrings: TStrings): Boolean;
var oDmo,oApp,oServers : OleVariant;
bResult : boolean;
i : integer;
begin
AStrings.Clear;
try
oDMO := CreateOleObject('SQLDMO.SQLServer');
oApp := oDMO.Application;
oServers := oApp.ListAvailableSQLServers; try
AStrings.BeginUpdate;
for i := 1 to oServers.Count do
AStrings.Add(oServers.Item(i));
finally
AStrings.EndUpdate;
end; bResult := true;
except
bResult := false;
end; oServers := Unassigned;
oApp := Unassigned;
oDMO := Unassigned; Result := bResult;
end;////////////////////////////////////////////////////
下面是引用
if GetSQLServerList(SqlServerList) then
ShowMessage('Get The SQLServer List False')
我依照上面的抄了一份在 D7 下面測試切沒通過。
老是運行到 AStrings.Add(oServers.Item(i)) 這裡 拋出異常。
請大蝦們指點。
下面是原代碼:
// ====================================================
// Load SQL Servers on a Network into a string list
// ====================================================
function GetSQLServerList(AStrings: TStrings): Boolean;
var oDmo,oApp,oServers : OleVariant;
bResult : boolean;
i : integer;
begin
AStrings.Clear;
try
oDMO := CreateOleObject('SQLDMO.SQLServer');
oApp := oDMO.Application;
oServers := oApp.ListAvailableSQLServers; try
AStrings.BeginUpdate;
for i := 1 to oServers.Count do
AStrings.Add(oServers.Item(i));
finally
AStrings.EndUpdate;
end; bResult := true;
except
bResult := false;
end; oServers := Unassigned;
oApp := Unassigned;
oDMO := Unassigned; Result := bResult;
end;////////////////////////////////////////////////////
下面是引用
if GetSQLServerList(SqlServerList) then
ShowMessage('Get The SQLServer List False')
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationUSES COMOBJ;{$R *.dfm}function GetSQLServerList(AStrings: TStrings): Boolean;
var oDmo,oApp,oServers : OleVariant;
bResult : boolean;
i : integer;
begin
AStrings.Clear;
try
oDMO := CreateOleObject('SQLDMO.SQLServer');
oApp := oDMO.Application;
oServers := oApp.ListAvailableSQLServers; try
AStrings.BeginUpdate;
for i := 1 to oServers.Count do
AStrings.Add(oServers.Item(i));
finally
AStrings.EndUpdate;
end; bResult := true;
except
bResult := false;
end; oServers := Unassigned;
oApp := Unassigned;
oDMO := Unassigned; Result := bResult;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not GetSQLServerList(ListBox1.Items) then
ShowMessage('Get The SQLServer List Fail')
end;
我再找找看是什麼問題。 :<
THKS!!