解决方案 »
- 新手请教!表頭要調用另外一個表的內容怎么写?
- quickreport动态创建QRLabel而不能分页打印?
- 香港中五学生计算机科目的一道会考题.请高手帮帮忙解决?题目如下:分不够再加.
- 关于项目开发管理软件的使用讨论
- 关于时间的问题,datetimepicker
- 谁用过window ce下的数据库?????
- 谁有局域网语音的源程序,控件,或开发包,发给我一个。
- 寻求(client)socket对远程主机多线程查询的例子
- 为什么不来学习ADA语言,你们难道不认为越是流行的消失的越快吗?ADA才是未来人才所必须掌握的,也许可以利用ADA来开发中国的操作系统,中国的学术之风该如何拯救!
- 如何将大的*.bmp位图文件压缩成小文件传输到网络
- 关于文件删除
- 《》《》《》IE中的身份验证对话框中的密码算法!?《》《》《》
你具体要完成什么功能?
请与我联系[email protected]
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.