例如局域网有两个工作组(group1(有a,b,c三台机器),group2(有d,e,f三台机器))其中a,b,f上装有sql server数据库,那么得到结果为a,b,f

解决方案 »

  1.   

    //获取数据库服务器列表
    Function Tfrm_START.GetDataBaseServerName :String ;
    var
       SQLServer: Variant;
       ServerList: Variant;
       i , nServers: integer;
    begin
      Result := '' ;
      try
        SQLServer := CreateOleObject('SQLDMO.Application');
        ServerList:= SQLServer.ListAvailableSQLServers;
        nServers := ServerList.Count;
        if  nServers = 0 then
        begin
          MessageDlg('网络中没有数据库服务器!', mtWarning ,[mbYes],0);
          Exit;
        end
        else //有数据库服务器
        begin
          if not Assigned(frm_SQLServerName) then
          begin
            frm_SQLServerName := Tfrm_SQLServerName.Create(nil);
            try
              with frm_SQLServerName do
              begin
                for i := 1 to nservers do
                begin
                  ListBox1.Items.Add(ServerList.Item(i));
                end;
                case frm_SQLServerName.ShowModal of    //返回值
                mrOk:
                  begin
                    Result := ListBox1.Items[ListBox1.ItemIndex];
                  end;
                end;
              end; //with frm_SQLServerName do
            finally
              FreeAndNil(frm_SQLServerName);
            end;
          end; //if not Assigned(frm_SQLServerName) then
        end;
      finally
        SQLServer := Null;
        serverList := Null;
      end;
    end;
      

  2.   

    uses ComObj
    ------------------------Function TForm1.GetDataBaseServerName:Variant ;
    var
       SQLServer: Variant;
       ServerList: Variant;
    begin
        SQLServer := CreateOleObject('SQLDMO.Application');
        ServerList:= SQLServer.ListAvailableSQLServers;
        Result:=ServerList;  
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    var i,nServers:integer;
        ServerList: Variant;
    begin
        ServerList:=GetDataBaseServerName;
        nServers:=ServerList.count;
        if nServers=0 then Exit;
        for i := 1 to nservers do
                begin
                  ListBox1.Items.Add(ServerList.Item(i));
                end;
    end;