当前位置:主页>销售管理软件> 列表

三层客户端登陆的问题?搜索局域网的计算机名称 找湖北会计电算化软件

财务软件版1楼: 客户端登陆一般选择一个计算机名,(或IP地址),还有就是用户名,密码
怎样搜索局域网的计算机名称,跟SQLSERVER搜索到的服务器有什么区别。

2楼: 我想的是如何在互联网里用IP地址找到对方的SQL SERVER 2000数据库,请教高手,帮你顶!! 如湖北会计电算化软件

3楼: to lcmlhs:

用花生壳应该可以吧!

4楼: 不好意思,什么是花生壳???

5楼: to:lcmlhs,
自己开贴子好吗?

6楼: 用adoconnetion 连一下这个IP的master数据库

财务软件版7楼: 取得局域网内有安装SQL SERVER 的电脑名.

unit FunctionU;

interface

uses Windows, Messages, Forms, SysUtils, DBGrids, Grids, DB, ValEdit, StdCtrls,
Classes, shellapi, Dialogs, Graphics, IniFiles, StrUtils, Math,
FileCtrl, Registry, comObj, shlObj, ActiveX, ExtCtrls, Controls, ADODB, Variants,
WinSock, DateUtils;

//////////////////function get SQL Server Name
const
NERR_Success = 0;
MAX_PREFERRED_LENGTH = DWORD(-1);
SV_TYPE_SQLSERVER = $00000004;


//////////////end function get SQL Server Name
type

//////////////////function get SQL Server Name
NET_API_STATUS = DWORD;
PServerInfo100 = ^TServerInfo100;
_SERVER_INFO_100 = record
sv100_platform_id: DWORD;
sv100_name: LPWSTR;
end;
{$EXTERNALSYM _SERVER_INFO_100}
TServerInfo100 = _SERVER_INFO_100;
SERVER_INFO_100 = _SERVER_INFO_100;
{$EXTERNALSYM SERVER_INFO_100}
//////////////end function get SQL Server Name


///////////////////////////////////////////////// //function get SQL Server Name
//Uses ExtCtrls, ComObj
function NetApiBufferAllocate(ByteCount: DWORD; var Buffer: Pointer):
NET_API_STATUS; stdcall; external ''netapi32.dll'' name ''NetApiBufferAllocate'';

function NetServerEnum(ServerName: LPCWSTR; Level: DWORD; var BufPtr: Pointer;
PrefMaxLen: DWORD; var EntriesRead: DWORD; var TotalEntries: DWORD;
ServerType: DWORD; Domain: LPCWSTR; ResumeHandle: PDWORD): NET_API_STATUS;
stdcall; external ''netapi32.dll'' name ''NetServerEnum'';



function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall; external
''netapi32.dll'' name ''NetApiBufferFree'';
function GetSQLServerList(var AList: TStrings; pwcServerName: PWChar = nil;
pwcDomain: PWChar = nil): Boolean;
////////////////////////////////////////////////////////////////////end function

implementation

function GetSQLServerList(var AList: TStrings; pwcServerName: PWChar = nil;
pwcDomain: PWChar = nil): Boolean;
var
NetAPIStatus: DWORD;
dwLevel: DWORD;
pReturnSvrInfo: Pointer;
dwPrefMaxLen: DWORD;
dwEntriesRead: DWORD;
dwTotalEntries: DWORD;
dwServerType: DWORD;
dwResumeHandle: PDWORD;
pCurSvrInfo: PServerInfo100;
i, j: Integer;
begin
Result := True;
try
dwLevel := 100;
pReturnSvrInfo := nil;
dwPrefMaxLen := MAX_PREFERRED_LENGTH;
dwEntriesRead := 0;
dwTotalEntries := 0;
dwServerType := SV_TYPE_SQLSERVER; //服务器类型
dwResumeHandle := nil;
NetApiBufferAllocate(SizeOf(pReturnSvrInfo), pReturnSvrInfo);
try
NetAPIStatus := NetServerEnum(pwcServerName, dwLevel, pReturnSvrInfo,
dwPrefMaxLen, dwEntriesRead, dwTotalEntries, dwServerType, pwcDomain,
dwResumeHandle);
if ((NetAPIStatus = NERR_Success) or (NetAPIStatus = ERROR_MORE_DATA)) and
(pReturnSvrInfo <> nil) then
begin
pCurSvrInfo := pReturnSvrInfo;
// 循环取得所有SQL Server服务器
i := 0;
j := dwEntriesRead;
while i < j do
begin
if pCurSvrInfo = nil then
Break;
with AList do
Add(pCurSvrInfo^.sv100_name);
Inc(i);
Inc(pCurSvrInfo);
end;
end;
finally
if Assigned(pReturnSvrInfo) then
NetApiBufferFree(pReturnSvrInfo);
end;
except
Result := False;
end;
end;

////////////////////////////////////////////////////////////////////end function
end.