Ver Mensaje Individual
  #3  
Antiguo 26-08-2011
LIGERO LIGERO is offline
Miembro
 
Registrado: jun 2007
Posts: 42
Reputación: 0
LIGERO Va por buen camino
Bueno, ya no tengo problema.
Encontré esta función y con un poquito de código mas, puedo acceder a los servidores SQL server que tengo instalados en mi red.

Código:
procedure ListAvailableSQLServers(Names : TStrings);
var
  RSCon                    : ADORecordsetConstruction;
  Rowset                   : IRowset;
  SourcesRowset            : ISourcesRowset;
  SourcesRecordset         : _Recordset;
  SourcesName, SourcesType : TField;
begin
  OleCheck(CoCreateInstance(CLASS_Recordset, nil, CLSCTX_INPROC_SERVER or
                            CLSCTX_LOCAL_SERVER, IUnknown, SourcesRecordset) );
  RSCon := SourcesRecordset as ADORecordsetConstruction;
  SourcesRowset := CreateComObject(ProgIDToClassID('SQLOLEDB Enumerator'))
                   as ISourcesRowset;
  OleCheck(SourcesRowset.GetSourcesRowset(nil, IRowset, 0, nil, IUnknown(Rowset)));
  RSCon.Rowset := RowSet;
  with TADODataSet.Create(nil) do
  try
    Recordset := SourcesRecordset;
    SourcesName := FieldByName('SOURCES_NAME'); { do not localize }
    SourcesType := FieldByName('SOURCES_TYPE'); { do not localize }
    Names.BeginUpdate;
      try
        while not EOF do
        begin
          if (  (SourcesType.AsInteger = DBSOURCETYPE_DATASOURCE) and
                (SourcesName.AsString <> '')
             )
          then
            Names.Add(SourcesName.AsString);
          Next;
        end;
      finally
        Names.EndUpdate;
     end;
  finally
    Free;
  end;
end;
Muchas gracias a todos y espero que os pueda servir a algunos.
Responder Con Cita