最好有源码,有资料也可以,如果好的话,我在加100分!
[email protected]

解决方案 »

  1.   

    我全要呢
    你具体要完成什么功能?
    请与我联系[email protected]
      

  2.   

    以下一段可以取局域网内数据库信息
    unit SqlServers;interfaceuses  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  StdCtrls, Buttons, ComCtrls , SQLDMO_TLB;//注意别忘了引入此文件type  TdmoObject = record    SQL_DMO    : _SQLServer;    lConnected : boolean;  end; type  TFormServersList = class(TForm)    Label1: TLabel;    Label2: TLabel;    CB_ServerNames: TComboBox;    CB_DataNames: TComboBox;    Label3: TLabel;    Label4: TLabel;    Ed_Login: TEdit;    Ed_Pwd: TEdit;    BitBtn1: TBitBtn;    BitBtn2: TBitBtn;    procedure FormCreate(Sender: TObject);    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);    procedure FormClose(Sender: TObject; var Action: TCloseAction);    procedure FormShow(Sender: TObject);    procedure BitBtn2Click(Sender: TObject);    procedure CB_DataNamesDropDown(Sender: TObject);  private    server_Names : TStringList;    //对象集合       PdmoObject : array of TdmoObject;    //获取所有的远程服务器    Function GetAllServers(ServerList : TStringList) : Boolean;    { Private declarations }  public    { Public declarations }  end; var  FormServersList: TFormServersList;implementation {$R *.DFM} { TForm1 } Function TFormServersList.GetAllServers(ServerList : TStringList) : Boolean;var  sApp : _Application ;  sName : NameList;  iPos : integer;begin  Result := True ;  try    sApp := CoApplication_.Create ; //创建的对象不用释放,delphi 自己会释放    sName := sApp.ListAvailableSQLServers;  except    Result := False;    Exit;  end;  if sName.Count > 0 then // 之所以 iPos 从1开始,是因为0 位置为空值即 ' '  for iPos := 1 to sName.Count - 1 do  begin    CB_ServerNames.Items.Add(sName.Item(iPos));    ServerList.Add(sName.Item(iPos));  end;end; procedure TFormServersList.FormCreate(Sender: TObject);var  lcv : integer;begin  server_Names := TStringList.Create;  if not GetAllServers(server_Names) then  begin    Application.MessageBox('无法获取服务器列表,可能缺少客户端DLL库函数','错误提示',MB_OK);    exit;  end;  for lcv := 0 to server_Names.Count - 1 do  begin    SetLength(PdmoObject,lcv + 1);    with PdmoObject[lcv] do    begin      SQL_DMO := CoSQLServer.Create;      SQL_DMO.Name := Trim(server_Names[lcv]);      //登陆安全属性,NT 身份验证      SQL_DMO.LoginSecure := false;      // 设置一个连接超时      SQL_DMO.LoginTimeout := 3;      //自动重新登陆,如果第一次失败后      SQL_DMO.AutoReconnect := true;      SQL_DMO.ApplicationName := server_Names[lcv];      lConnected := false;    end;  end;end; procedure TFormServersList.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin  server_Names.Free;end; procedure TFormServersList.FormClose(Sender: TObject; var Action: TCloseAction);begin  Action := CaFree;end; procedure TFormServersList.FormShow(Sender: TObject);begin  if CB_ServerNames.Items.Count > 0 then //列举所有服务器名字    CB_ServerNames.Text := CB_ServerNames.Items.Strings[0];end; procedure TFormServersList.BitBtn2Click(Sender: TObject);begin  Close ;end; procedure TFormServersList.CB_DataNamesDropDown(Sender: TObject);var  icount ,Server_B : integer;begin  CB_DataNames.Clear;  Screen.Cursor := CrHourGlass;  Server_B := CB_ServerNames.Items.IndexOf(CB_ServerNames.Text) ;  with PdmoObject[Server_B].SQL_DMO do  begin    if not PdmoObject[Server_B].lConnected then    try      Connect(Name,Trim(Ed_Login.Text),Trim(Ed_Pwd.Text));    except      Screen.Cursor := CrDefault ;      Application.MessageBox('请检查用户名或密码是否正确','连接失败',MB_OK);      Exit ;    end;    if not VerifyConnection(SQLDMOConn_ReconnectIfDead) then    begin      ShowMessage('在试图连接到SQL SERVER 2000 时出现错误' + #10#13 +                             '确信是否加在了动态连接库SQLDMO.DLL');      exit;    end else      PdmoObject[Server_B].lConnected := True ;    Databases.Refresh(true);    for icount := 1 to Databases.Count do      CB_DataNames.Items.Add(Databases.Item(icount,null).name);  end;  Screen.Cursor := CrDefault ;endend.