/*************得到本地局域网内sqlserver的服务器列表********** ------------------------2003/11/21/gmlxf----------------- */ if exists(select name from dbo.sysobjects where id=object_id(N'dbo.p_ListLocalServers') and objectproperty(id,N'IsProcedure')=1) drop proc p_ListLocalServers go create proc dbo.p_ListLocalServers as begin set nocount on create table #servers(sname varchar(255)) insert #servers exec master..xp_cmdshell 'osql -L' select ltrim(sname) serverName from #servers where sname!='Servers:' and sname!='服务器:' and sname != 'NULL' drop table #servers end go --调用 exec p_ListLocalServers
function TFormDataSet.GetSQLServer(ComboBox: TComboBox): Boolean; var SQLServer: Variant; ServerList: Variant; i, nServers: integer; sRetValue: string; begin ComboBox.Items.Clear; Result := False; try Screen.Cursor := crHourGlass; SQLServer := CreateOleObject('SQLDMO.Application'); ServerList := SQLServer.ListAvailableSQLServers; nServers := ServerList.Count; for i := 1 to nServers do ComboBox.Items.Add(ServerList.Item(i)); SQLServer := NULL; ServerList := NULL; Result := True; cbSQLServer.Style := csDropDownList; except end; Screen.Cursor := crDefault; end;
连上数据库后 执行 declare @a varchar(30) set @a='pubs' exec('select name from '+@a+'.dbo.sysobjects where type=''u''')可得到该数据库的用户表名
to:playyuer(双规干部) function TFormDataSet.GetSQLServer(ComboBox: TComboBox): Boolean; var SQLServer: Variant; ServerList: Variant; i, nServers: integer; sRetValue: string; begin ComboBox.Items.Clear; Result := False; try Screen.Cursor := crHourGlass; SQLServer := CreateOleObject('SQLDMO.Application'); ServerList := SQLServer.ListAvailableSQLServers; nServers := ServerList.Count; for i := 1 to nServers do ComboBox.Items.Add(ServerList.Item(i)); SQLServer := NULL; ServerList := NULL; Result := True; cbSQLServer.Style := csDropDownList; //怎么我在delphi 里面这个报错? //把他改成 combobox.style := csDropDownList; 或 去掉!就好了! 但这句话起什么作用啊? except end; Screen.Cursor := crDefault; end;
------------------------2003/11/21/gmlxf-----------------
*/
if exists(select name from dbo.sysobjects where id=object_id(N'dbo.p_ListLocalServers') and objectproperty(id,N'IsProcedure')=1)
drop proc p_ListLocalServers
go
create proc dbo.p_ListLocalServers
as
begin
set nocount on
create table #servers(sname varchar(255))
insert #servers exec master..xp_cmdshell 'osql -L'
select ltrim(sname) serverName from #servers where sname!='Servers:' and sname!='服务器:' and sname != 'NULL'
drop table #servers
end
go
--调用
exec p_ListLocalServers
var
SQLServer: Variant;
ServerList: Variant;
i, nServers: integer;
sRetValue: string;
begin
ComboBox.Items.Clear;
Result := False;
try
Screen.Cursor := crHourGlass;
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList := SQLServer.ListAvailableSQLServers;
nServers := ServerList.Count;
for i := 1 to nServers do
ComboBox.Items.Add(ServerList.Item(i));
SQLServer := NULL;
ServerList := NULL;
Result := True;
cbSQLServer.Style := csDropDownList;
except
end;
Screen.Cursor := crDefault;
end;
执行
declare @a varchar(30)
set @a='pubs'
exec('select name from '+@a+'.dbo.sysobjects where type=''u''')可得到该数据库的用户表名
function TFormDataSet.GetSQLServer(ComboBox: TComboBox): Boolean;
var
SQLServer: Variant;
ServerList: Variant;
i, nServers: integer;
sRetValue: string;
begin
ComboBox.Items.Clear;
Result := False;
try
Screen.Cursor := crHourGlass;
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList := SQLServer.ListAvailableSQLServers;
nServers := ServerList.Count;
for i := 1 to nServers do
ComboBox.Items.Add(ServerList.Item(i));
SQLServer := NULL;
ServerList := NULL;
Result := True;
cbSQLServer.Style := csDropDownList; //怎么我在delphi 里面这个报错?
//把他改成 combobox.style := csDropDownList; 或 去掉!就好了! 但这句话起什么作用啊?
except
end;
Screen.Cursor := crDefault;
end;